跳转到内容

文件与目录操作命令

文件和目录操作是命令行日常使用中占比最高的一类操作。这一节覆盖 lscdmkdircpmvrmfind 这几个命令的核心用法,均为 Debian 系发行版默认自带,无需额外安装。

Terminal window
ls # 列出当前目录内容
ls -l # 详细信息:权限、所有者、大小、修改时间
ls -a # 包含隐藏文件(以 . 开头的文件)
ls -lh # 详细信息,文件大小以易读单位显示(K/M/G)
ls -lt # 按修改时间排序,最新的在最前

-l-a-h 这类参数可以组合使用,例如 ls -lah 等价于同时启用三个选项。

Terminal window
cd /path/to/dir # 切换到绝对路径
cd relative/dir # 切换到相对于当前目录的路径
cd ~ # 切换到当前用户的家目录
cd - # 切换回上一次所在的目录
cd .. # 切换到上一级目录
Terminal window
mkdir new-dir # 创建单层目录
mkdir -p a/b/c # 递归创建多层目录,父目录不存在时自动创建

不加 -p 参数时,如果父目录(例中的 aa/b)不存在,命令会直接报错退出。

Terminal window
cp source.txt target.txt # 复制文件
cp -r source-dir target-dir # 递归复制整个目录
cp -i source.txt target.txt # 目标已存在时先询问是否覆盖

复制目录必须加 -r(recursive),否则命令会报错提示目标是一个目录。

Terminal window
mv old-name.txt new-name.txt # 重命名(同目录内移动等价于重命名)
mv file.txt /path/to/dir/ # 移动文件到目标目录

mv 没有单独的重命名命令,重命名操作本质上是“移动到同目录下的新文件名”。

Terminal window
rm file.txt # 删除文件
rm -r dir/ # 递归删除目录及其内容
rm -rf dir/ # 递归删除,且不询问确认(force)
Terminal window
find . -name "*.txt" # 在当前目录及子目录中按文件名查找
find /path -type d # 只查找目录(-type f 只查找文件)
find . -mtime -1 # 查找 1 天内修改过的文件
find . -size +10M # 查找大于 10MB 的文件

find 支持按名称、类型、大小、修改时间等多个维度组合查找,命令的整体结构是“在哪找 + 按什么条件筛选”,可以叠加多个筛选条件。相比之下,locate 命令查找速度更快,但依赖预先建立的索引数据库,无法反映索引更新之后新产生的文件变化;两者各有适用场景,find 更适合需要精确、实时结果的场景。