命令与脚本:文件、目录与磁盘 · 创建、复制、移动与删除
创建、复制、移动与删除
按目录/文件创建、复制安装、重命名和删除的顺序查阅;批量改名有 qmv、zmv,依赖编辑器选择目标可用 qcp。
mkdir · 创建目录并设置其权限
更多信息:https://www.gnu.org/software/coreutils/manual/html_node/mkdir-invocation.html。
- 创建特定目录:
mkdir {{路径/到/目录1 路径/到/目录2 ...}}- 根据需要创建特定目录及其父目录:
mkdir {{[-p|--parents]}} {{路径/到/目录1 路径/到/目录2 ...}}- 创建具有特定权限的目录:
mkdir {{[-m|--mode]}} {{u=rwx,g=rw,o=r}} {{路径/到/目录1 路径/到/目录2 ...}}touch · 创建文件并设置访问/修改时间
更多信息:https://www.gnu.org/software/coreutils/manual/html_node/touch-invocation.html。
- 创建指定的文件:
touch {{路径/到/文件1 路径/到/文件2 ...}}- 将文件的访问(a)或修改时间(m)设置为当前时间,如果文件不存在则不创建(-c):
touch {{[-c|--no-create]}} -{{a|m}} {{路径/到/文件1 路径/到/文件2 ...}}- 将文件时间(-t)设置为指定值,如果文件不存在则不创建(-c):
touch {{[-c|--no-create]}} -t {{YYYYMMDDHHMM.SS}} {{路径/到/文件1 路径/到/文件2 ...}}- 将文件时间设置为另一文件(-r,即文件3)的时间,如果文件不存在则不创建(-c):
touch {{[-c|--no-create]}} {{[-r|--reference]}} {{路径/到/文件3}} {{路径/到/文件1 路径/到/文件2 ...}}mkfile · 创建一个或多个任意大小的空文件
- 创建一个 15 千字节的空文件:
mkfile -n {{15k}} {{文件名}}- 创建给定大小和单位的文件(bytes, KB, MB, GB):
mkfile -n {{大小}}{{b|k|m|g}} {{文件名}}- 创建两个 4 兆字节的文件:
mkfile -n {{4m}} {{文件名 1}} {{文件名 2}}cp · 复制文件和目录
更多信息:https://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html。
- 将文件复制到另一个位置:
cp {{路径/到/源_文件.ext}} {{路径/到/目标文件.ext}}- 将文件复制到另一个文件夹,并保留原来的文件名:
cp {{路径/到/源文件.ext}} {{路径/到/目标的目录}}- 以递归方式将文件夹内的内容复制到另一个位置(如果目标文件夹存在,则将此文件夹复制到目标文件夹中):
cp {{[-r|--recursive]}} {{路径/到/源目录}} {{路径/到/目标目录}}- 以详细模式递归复制目录(在复制文件时显示文件信息):
cp {{[-vr|--verbose --recursive]}} {{路径/到/源目录}} {{路径/到/目标目录}}- 一次将多个文件复制到一个目录:
cp {{[-t|--target-directory]}} {{路径/到/目标_目录}} {{路径/到/文件1 路径/到/文件2 ...}}- 以交互方式将文本文件复制到另一个位置(覆盖之前会提示用户):
cp {{[-i|--interactive]}} {{*.txt}} {{路径/到/目标_目录}}- 复制之前遵循符号链接:
cp {{[-L|--dereference]}} {{链接}} {{路径/到/目标_目录}}- 使用第一个参数作为目标目录(对于
xargs ... | cp -t 目标_目录这样的命令非常有用):
cp {{[-t|--target-directory]}} {{路径/到/目标目录}} {{路径/到/文件或目录1 路径/到/文件或目录2 ...}}install · 复制文件并设置属性
将文件(通常是可执行文件)复制到系统位置,如
/usr/local/bin,并赋予它们适当的权限或所有权。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/install-invocation.html。
- 复制文件到目标目录:
install {{路径/到/源文件1 路径/到/源文件2 ...}} {{路径/到/目标目录}}- 复制文件到目标目录,并设置其所有权:
install {{[-o|--owner]}} {{用户}} {{路径/到/源文件1 路径/到/源文件2 ...}} {{路径/到/目标目录}}- 复制文件到目标目录,并设置其所属组:
install {{[-g|--group]}} {{用户组}} {{路径/到/源文件1 路径/到/源文件2 ...}} {{路径/到/目标目录}}- 复制文件到目标目录,并设置其权限:
install {{[-m|--mode]}} {{+x}} {{路径/到/源文件1 路径/到/源文件2 ...}} {{路径/到/目标目录}}- 复制文件到目标目录,保留访问时间和修改时间:
install {{[-p|--preserve-timestamps]}} {{路径/到/源文件1 路径/到/源文件2 ...}} {{路径/到/目标目录}}- 创建目标目录及其父目录,然后复制文件到目标目录:
install -D {{路径/到/源文件}} {{路径/到/目标目录/目标文件}}qcp · 使用默认文本编辑器复制文件,以定义文件名
更多信息:https://manned.org/qcp。
- 复制单个文件(在编辑器中打开左侧为源文件名,右侧为目标文件名的界面):
qcp {{源文件}}- 复制多个 JPEG 文件:
qcp {{*.jpg}}- 复制文件,但在编辑器中交换源文件名和目标文件名的位置:
qcp {{[-o|--option]}} swap {{*.jpg}}mv · 移动或重命名文件或目录
更多信息:https://www.gnu.org/software/coreutils/manual/html_node/mv-invocation.html。
- 重命名文件或目录,当目标不是一个已存在的目录时:
mv {{路径/到/源}} {{路径/到/目标}}- 将文件或目录移动到已存在的目录中:
mv {{路径/到/源}} {{路径/到/已存在的目录}}- 将多个文件移动到已存在的目录中,并保持文件名不变:
mv {{路径/到/源1 路径/到/源2 ...}} {{路径/到/已存在的目录}}- 覆盖现有文件前无需确认:
mv {{[-f|--force]}} {{路径/到/源}} {{路径/到/目标}}- 无论是否有文件权限,覆盖现有文件前均需要确认:
mv {{[-i|--interactive]}} {{路径/到/源}} {{路径/到/目标}}- 不覆盖现有的目标文件:
mv {{[-n|--no-clobber]}} {{路径/到/源}} {{路径/到/目标}}- 在详细模式下移动文件,移动后显示文件的信息:
mv {{[-v|--verbose]}} {{路径/到/源}} {{路径/到/目标}}- 指定目标目录,以便使用外部工具来收集可移动的文件:
{{find /var/log -type f -name '*.log' -print0}} | {{xargs -0}} mv {{[-t|--target-directory]}} {{路径/到/目标目录}}qmv · 使用默认文本编辑器定义文件名来移动文件和目录
更多信息:https://manned.org/qmv。
- 移动单个文件(在编辑器中打开左侧为源文件名,右侧为目标文件名):
qmv {{源文件}}- 移动多个 JPEG 文件:
qmv {{*.jpg}}- 移动多个目录:
qmv {{[-d|--directory]}} {{路径/到/目录1 路径/到/目录2 路径/到/目录3 ...}}- 移动目录中的所有文件和目录:
qmv {{[-R|--recursive]}} {{路径/到/目录}}- 移动文件,但在编辑器中交换源文件名和目标文件名的位置:
qmv {{[-o|--option]}} swap {{*.jpg}}- 重命名当前目录中的所有文件和文件夹,但在编辑器中仅显示目标文件名(可以将其视为一种简单模式):
qmv {{[-f|--format]}} do .zmv · 移动或重命名符合指定扩展模式的文件
更多信息:https://zsh.sourceforge.io/Doc/Release/User-Contributions.html。
- 使用类似正则表达式的模式移动文件:
zmv '{{(*).log}}' '{{$1.txt}}'- 预览移动结果,但不进行任何实际更改:
zmv -n '{{(*).log}}' '{{$1.txt}}'- 交互式移动文件,在每次更改之前进行提示:
zmv -i '{{(*).log}}' '{{$1.txt}}'- 在执行时详细打印每个操作:
zmv -v '{{(*).log}}' '{{$1.txt}}'ln · 创建指向文件和目录的链接
更多信息:https://www.gnu.org/software/coreutils/manual/html_node/ln-invocation.html。
- 创建指向文件或目录的符号链接:
ln {{[-s|--symbolic]}} /{{路径/到/文件或目录}} {{路径/到/符号链接}}- 创建相对于链接所在位置的符号链接:
ln {{[-s|--symbolic]}} {{路径/到/文件或目录}} {{路径/到/符号链接}}- 覆盖现有的符号链接以指向其他文件:
ln {{[-sf|--symbolic --force]}} /{{路径/到/新文件}} {{路径/到/符号链接}}- 创建文件的硬链接:
ln /{{路径/到/文件}} {{路径/到/硬链接}}unlink · 从文件系统中删除对文件的链接
如果链接是文件的最后一个,文件内容将丢失。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/unlink-invocation.html。
- 如果是最后一个链接,则删除指定的文件:
unlink {{路径/到/文件}}rm · 删除文件或目录
另请参阅:
rmdir,trash。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/rm-invocation.html。
- 删除指定文件:
rm {{路径/到/文件1 路径/到/文件2 ...}}- 删除指定文件,忽略不存在的文件:
rm {{[-f|--force]}} {{路径/到/文件1 路径/到/文件2 ...}}- 交互式地删除多个文件,每次删除前都会有提示:
rm {{[-i|--interactive]}} {{路径/到/文件1 路径/到/文件2 ...}}- 删除文件并打印删除信息:
rm {{[-v|--verbose]}} {{路径/到/文件1 路径/到/文件2 ...}}- 递归删除指定文件和目录:
rm {{[-r|--recursive]}} {{路径/到/文件或目录1 路径/到/文件或目录2 ...}}- 删除空目录(这被认为是安全的方法):
rm {{[-d|--dir]}} {{路径/到/目录}}rmdir · 删除一个目录
另请参阅:
rm。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/rmdir-invocation.html。
- 删除空目录,使用
rm -r删除非空目录:
rmdir {{路径/到/目录}}- 删除目标及其父目录(对嵌套的目录有用):
rmdir -p {{路径/到/目录}}继续阅读
- 文件与文本处理完整实践与解答
- 文件与文本处理上手与对象
- 文件与文本处理任务与配置