1、目录操作函数
ls
(列出目录内容)
- 用途:列出指定目录中的文件和子目录。
- 语法:
ls [选项] [路径]
- 常用选项:
-l
:以长格式显示文件详细信息(权限、所有者、大小、时间等)。-a
:显示隐藏文件(以.
开头的文件)。-R
:递归列出子目录内容。
# 列出当前目录下的所有文件和子目录
ls# 列出当前目录的详细信息(包含隐藏文件)
ls -la # 可简写成ll# 递归列出当前目录及其子目录的内容
ls -R
cd
(切换目录)
- 用途:更改当前工作目录。
- 语法:
cd [路径]
- 常用路径:
~
:用户主目录(如 /home/username
)。/
:根目录。..
:上一级目录。
# 切换到用户主目录
cd ~# 切换到根目录
cd /# 切换到上一级目录
cd ..
mkdir
(创建目录)
- 用途:创建新目录。
- 语法:
mkdir [选项] 目录名
- 常用选项:
-p
:递归创建目录(自动创建父目录)。-p,--parents的缩写,表示自动创建路径中的父目录(如果它们不存在)
# 创建单个目录
mkdir new_folder# 递归创建多级目录(如 a/b/c)
mkdir -p a/b/c
rmdir
(删除空目录)
- 用途:删除空目录。
- 语法:
rmdir [目录名]
- 注意:目录必须为空,否则会报错。
# 删除空目录 example_dir
rmdir example_dir
rm
(删除文件或目录)
- 用途:删除文件或目录。
- 语法:
rm [选项] 文件或目录
- 常用选项:
-r
:递归删除目录及其内容,recursive。-f
:强制删除(不提示确认),force。
# 删除文件 file.txt
rm file.txt# 递归删除目录及其内容(强制删除)
rm -rf directory_name
cp
(复制文件或目录)
- 用途:复制文件或目录。
- 语法:
cp [选项] 源路径 目标路径
- 常用选项:
-r
:递归复制目录。-i
:交互式复制(覆盖前提示),interactive。
# 复制文件
cp source.txt destination.txt# 递归复制目录
cp -r source_dir/ destination_dir/
mv
(移动或重命名文件/目录)
- 用途:移动文件或目录,或重命名文件/目录。
- 语法:mv [选项] 源文件/目录 目标路径/新名称
- 常用选项:
-v
:显示详细操作信息-i
:交互式操作(防止覆盖)-n
:禁止覆盖已存在的文件-u
:当源文件比目标文件新,或者目标文件不存在时,才执行移动操作-
-b
:覆盖前备份原文件
# 1. 创建测试文件和目录
mkdir -p test_dir1 test_dir2
touch test_dir1/file1.txt test_dir1/file2.txt test_dir1/file3.txt
echo "初始文件结构:"
ls -R test_dir1
# 输出:
# test_dir1:
# file1.txt file2.txt file3.txt# ----------------------------
# 2. 移动单个文件
# 将 file1.txt 移动到 test_dir2
mv test_dir1/file1.txt test_dir2/
echo "移动单个文件后:"
ls -R test_dir2
# 输出:
# test_dir2:
# file1.txt# ----------------------------
# 3. 重命名文件
# 将 file2.txt 重命名为 new_file.txt
mv test_dir1/file2.txt test_dir1/new_file.txt
echo "重命名文件后:"
ls test_dir1
# 输出:
# file3.txt new_file.txt# ----------------------------
# 4. 移动多个文件
# 将多个文件移动到目标目录
mv test_dir1/file3.txt test_dir1/new_file.txt test_dir2/
echo "移动多个文件后:"
ls -R test_dir2
# 输出:
# test_dir2:
# file1.txt file3.txt new_file.txt# ----------------------------
# 5. 使用 -i 防止覆盖(交互式)
# 如果目标文件存在,会提示是否覆盖
# 示例:尝试覆盖 test_dir2 中的 file1.txt
mv -i test_dir1/file1.txt test_dir2/file1.txt
# 输出示例:
# mv: overwrite 'test_dir2/file1.txt'? y# ----------------------------
# 6. 使用 -v 显示详细操作
# 显示移动过程的详细信息
mv -v test_dir1/file1.txt test_dir2/
# 输出示例:
# 'test_dir1/file1.txt' -> 'test_dir2/file1.txt'# ----------------------------
# 7. 使用 -n 禁止覆盖
# 如果目标文件存在,跳过操作
mv -n test_dir1/file1.txt test_dir2/
# 输出:无(因为目标文件已存在)# ----------------------------
# 8. 使用通配符批量移动
# 移动所有 .txt 文件
touch test_dir1/a.txt test_dir1/b.txt
mv test_dir1/*.txt test_dir2/
echo "通配符批量移动后:"
ls -R test_dir2
# 输出示例:
# test_dir2:
# a.txt b.txt file1.txt file3.txt new_file.txt# ----------------------------
# 9. 使用 -b 覆盖前备份
# 覆盖前备份原文件(备份文件名加 ~)
mv -b test_dir2/file1.txt test_dir2/backup.txt
echo "覆盖前备份示例:"
ls -R test_dir2
# 输出示例:
# test_dir2:
# backup.txt file1.txt~ a.txt b.txt file3.txt new_file.txt# ----------------------------
# 10. 结合 find 移动特定文件
# 查找并移动所有 .log 文件
touch test_dir1/sample.log
find test_dir1 -name "*.log" -exec mv {} test_dir2/ \;
echo "find + mv 示例:"
ls -R test_dir2
# 输出示例:
# test_dir2:
# sample.log backup.txt file1.txt~ a.txt b.txt file3.txt new_file.txt# ----------------------------
# 11. 移动目录
# 移动整个目录及其内容
mv test_dir1 test_dir2/
echo "移动目录后:"
ls -R test_dir2
# 输出示例:
# test_dir2:
# sample.log backup.txt file1.txt~ a.txt b.txt file3.txt new_file.txt test_dir1# test_dir2/test_dir1:
# (空目录,因为所有文件已被移动)
find
(查找文件或目录)
- 用途:在目录树中查找文件或目录。
- 语法:
find [路径] [表达式]
- 常用选项:
-name
:按名称查找。-type
:按类型查找(f
表示文件,d
表示目录