Skip to content
← 返回文件与文本处理列表
文件与文本处理任务与配置

命令与脚本:文件、目录与磁盘 · 创建、复制、移动与删除 ​

返回分篇目录

创建、复制、移动与删除 ​

按目录/文件创建、复制安装、重命名和删除的顺序查阅;批量改名有 qmv、zmv,依赖编辑器选择目标可用 qcp。

mkdir · 创建目录并设置其权限 ​

更多信息:https://www.gnu.org/software/coreutils/manual/html_node/mkdir-invocation.html。

  • 创建特定目录:
bash
mkdir {{路径/到/目录1 路径/到/目录2 ...}}
  • 根据需要创建特定目录及其父目录:
bash
mkdir {{[-p|--parents]}} {{路径/到/目录1 路径/到/目录2 ...}}
  • 创建具有特定权限的目录:
bash
mkdir {{[-m|--mode]}} {{u=rwx,g=rw,o=r}} {{路径/到/目录1 路径/到/目录2 ...}}

touch · 创建文件并设置访问/修改时间 ​

更多信息:https://www.gnu.org/software/coreutils/manual/html_node/touch-invocation.html。

  • 创建指定的文件:
bash
touch {{路径/到/文件1 路径/到/文件2 ...}}
  • 将文件的访问(a)或修改时间(m)设置为当前时间,如果文件不存在则不创建(-c):
bash
touch {{[-c|--no-create]}} -{{a|m}} {{路径/到/文件1 路径/到/文件2 ...}}
  • 将文件时间(-t)设置为指定值,如果文件不存在则不创建(-c):
bash
touch {{[-c|--no-create]}} -t {{YYYYMMDDHHMM.SS}} {{路径/到/文件1 路径/到/文件2 ...}}
  • 将文件时间设置为另一文件(-r,即文件3)的时间,如果文件不存在则不创建(-c):
bash
touch {{[-c|--no-create]}} {{[-r|--reference]}} {{路径/到/文件3}} {{路径/到/文件1 路径/到/文件2 ...}}

mkfile · 创建一个或多个任意大小的空文件 ​

更多信息:https://manned.org/mkfile。

  • 创建一个 15 千字节的空文件:
bash
mkfile -n {{15k}} {{文件名}}
  • 创建给定大小和单位的文件(bytes, KB, MB, GB):
bash
mkfile -n {{大小}}{{b|k|m|g}} {{文件名}}
  • 创建两个 4 兆字节的文件:
bash
mkfile -n {{4m}} {{文件名 1}} {{文件名 2}}

cp · 复制文件和目录 ​

更多信息:https://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html。

  • 将文件复制到另一个位置:
bash
cp {{路径/到/源_文件.ext}} {{路径/到/目标文件.ext}}
  • 将文件复制到另一个文件夹,并保留原来的文件名:
bash
cp {{路径/到/源文件.ext}} {{路径/到/目标的目录}}
  • 以递归方式将文件夹内的内容复制到另一个位置(如果目标文件夹存在,则将此文件夹复制到目标文件夹中):
bash
cp {{[-r|--recursive]}} {{路径/到/源目录}} {{路径/到/目标目录}}
  • 以详细模式递归复制目录(在复制文件时显示文件信息):
bash
cp {{[-vr|--verbose --recursive]}} {{路径/到/源目录}} {{路径/到/目标目录}}
  • 一次将多个文件复制到一个目录:
bash
cp {{[-t|--target-directory]}} {{路径/到/目标_目录}} {{路径/到/文件1 路径/到/文件2 ...}}
  • 以交互方式将文本文件复制到另一个位置(覆盖之前会提示用户):
bash
cp {{[-i|--interactive]}} {{*.txt}} {{路径/到/目标_目录}}
  • 复制之前遵循符号链接:
bash
cp {{[-L|--dereference]}} {{链接}} {{路径/到/目标_目录}}
  • 使用第一个参数作为目标目录(对于 xargs ... | cp -t 目标_目录 这样的命令非常有用):
bash
cp {{[-t|--target-directory]}} {{路径/到/目标目录}} {{路径/到/文件或目录1 路径/到/文件或目录2 ...}}

install · 复制文件并设置属性 ​

将文件(通常是可执行文件)复制到系统位置,如 /usr/local/bin,并赋予它们适当的权限或所有权。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/install-invocation.html。

  • 复制文件到目标目录:
bash
install {{路径/到/源文件1 路径/到/源文件2 ...}} {{路径/到/目标目录}}
  • 复制文件到目标目录,并设置其所有权:
bash
install {{[-o|--owner]}} {{用户}} {{路径/到/源文件1 路径/到/源文件2 ...}} {{路径/到/目标目录}}
  • 复制文件到目标目录,并设置其所属组:
bash
install {{[-g|--group]}} {{用户组}} {{路径/到/源文件1 路径/到/源文件2 ...}} {{路径/到/目标目录}}
  • 复制文件到目标目录,并设置其权限:
bash
install {{[-m|--mode]}} {{+x}} {{路径/到/源文件1 路径/到/源文件2 ...}} {{路径/到/目标目录}}
  • 复制文件到目标目录,保留访问时间和修改时间:
bash
install {{[-p|--preserve-timestamps]}} {{路径/到/源文件1 路径/到/源文件2 ...}} {{路径/到/目标目录}}
  • 创建目标目录及其父目录,然后复制文件到目标目录:
bash
install -D {{路径/到/源文件}} {{路径/到/目标目录/目标文件}}

qcp · 使用默认文本编辑器复制文件,以定义文件名 ​

更多信息:https://manned.org/qcp。

  • 复制单个文件(在编辑器中打开左侧为源文件名,右侧为目标文件名的界面):
bash
qcp {{源文件}}
  • 复制多个 JPEG 文件:
bash
qcp {{*.jpg}}
  • 复制文件,但在编辑器中交换源文件名和目标文件名的位置:
bash
qcp {{[-o|--option]}} swap {{*.jpg}}

mv · 移动或重命名文件或目录 ​

更多信息:https://www.gnu.org/software/coreutils/manual/html_node/mv-invocation.html。

  • 重命名文件或目录,当目标不是一个已存在的目录时:
bash
mv {{路径/到/源}} {{路径/到/目标}}
  • 将文件或目录移动到已存在的目录中:
bash
mv {{路径/到/源}} {{路径/到/已存在的目录}}
  • 将多个文件移动到已存在的目录中,并保持文件名不变:
bash
mv {{路径/到/源1 路径/到/源2 ...}} {{路径/到/已存在的目录}}
  • 覆盖现有文件前无需确认:
bash
mv {{[-f|--force]}} {{路径/到/源}} {{路径/到/目标}}
  • 无论是否有文件权限,覆盖现有文件前均需要确认:
bash
mv {{[-i|--interactive]}} {{路径/到/源}} {{路径/到/目标}}
  • 不覆盖现有的目标文件:
bash
mv {{[-n|--no-clobber]}} {{路径/到/源}} {{路径/到/目标}}
  • 在详细模式下移动文件,移动后显示文件的信息:
bash
mv {{[-v|--verbose]}} {{路径/到/源}} {{路径/到/目标}}
  • 指定目标目录,以便使用外部工具来收集可移动的文件:
bash
{{find /var/log -type f -name '*.log' -print0}} | {{xargs -0}} mv {{[-t|--target-directory]}} {{路径/到/目标目录}}

qmv · 使用默认文本编辑器定义文件名来移动文件和目录 ​

更多信息:https://manned.org/qmv。

  • 移动单个文件(在编辑器中打开左侧为源文件名,右侧为目标文件名):
bash
qmv {{源文件}}
  • 移动多个 JPEG 文件:
bash
qmv {{*.jpg}}
  • 移动多个目录:
bash
qmv {{[-d|--directory]}} {{路径/到/目录1 路径/到/目录2 路径/到/目录3 ...}}
  • 移动目录中的所有文件和目录:
bash
qmv {{[-R|--recursive]}} {{路径/到/目录}}
  • 移动文件,但在编辑器中交换源文件名和目标文件名的位置:
bash
qmv {{[-o|--option]}} swap {{*.jpg}}
  • 重命名当前目录中的所有文件和文件夹,但在编辑器中仅显示目标文件名(可以将其视为一种简单模式):
bash
qmv {{[-f|--format]}} do .

zmv · 移动或重命名符合指定扩展模式的文件 ​

更多信息:https://zsh.sourceforge.io/Doc/Release/User-Contributions.html。

  • 使用类似正则表达式的模式移动文件:
bash
zmv '{{(*).log}}' '{{$1.txt}}'
  • 预览移动结果,但不进行任何实际更改:
bash
zmv -n '{{(*).log}}' '{{$1.txt}}'
  • 交互式移动文件,在每次更改之前进行提示:
bash
zmv -i '{{(*).log}}' '{{$1.txt}}'
  • 在执行时详细打印每个操作:
bash
zmv -v '{{(*).log}}' '{{$1.txt}}'

ln · 创建指向文件和目录的链接 ​

更多信息:https://www.gnu.org/software/coreutils/manual/html_node/ln-invocation.html。

  • 创建指向文件或目录的符号链接:
bash
ln {{[-s|--symbolic]}} /{{路径/到/文件或目录}} {{路径/到/符号链接}}
  • 创建相对于链接所在位置的符号链接:
bash
ln {{[-s|--symbolic]}} {{路径/到/文件或目录}} {{路径/到/符号链接}}
  • 覆盖现有的符号链接以指向其他文件:
bash
ln {{[-sf|--symbolic --force]}} /{{路径/到/新文件}} {{路径/到/符号链接}}
  • 创建文件的硬链接:
bash
ln /{{路径/到/文件}} {{路径/到/硬链接}}

unlink · 从文件系统中删除对文件的链接 ​

如果链接是文件的最后一个,文件内容将丢失。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/unlink-invocation.html。

  • 如果是最后一个链接,则删除指定的文件:
bash
unlink {{路径/到/文件}}

rm · 删除文件或目录 ​

另请参阅:rmdir, trash。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/rm-invocation.html。

  • 删除指定文件:
bash
rm {{路径/到/文件1 路径/到/文件2 ...}}
  • 删除指定文件,忽略不存在的文件:
bash
rm {{[-f|--force]}} {{路径/到/文件1 路径/到/文件2 ...}}
  • 交互式地删除多个文件,每次删除前都会有提示:
bash
rm {{[-i|--interactive]}} {{路径/到/文件1 路径/到/文件2 ...}}
  • 删除文件并打印删除信息:
bash
rm {{[-v|--verbose]}} {{路径/到/文件1 路径/到/文件2 ...}}
  • 递归删除指定文件和目录:
bash
rm {{[-r|--recursive]}} {{路径/到/文件或目录1 路径/到/文件或目录2 ...}}
  • 删除空目录(这被认为是安全的方法):
bash
rm {{[-d|--dir]}} {{路径/到/目录}}

rmdir · 删除一个目录 ​

另请参阅:rm。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/rmdir-invocation.html。

  • 删除空目录,使用 rm -r 删除非空目录:
bash
rmdir {{路径/到/目录}}
  • 删除目标及其父目录(对嵌套的目录有用):
bash
rmdir -p {{路径/到/目录}}

继续阅读