mv
在Linux操作系统上,mv命令移动并重命名文件和目录。
查看英文版
1 mv 运行系统环境
2 mv 语法
3 mv 例子
mv 运行系统环境
Linux
mv 语法
将名为source的文件重命名为destination:
mv [options] [-T] source destination
将源文件移动到名为destination的目录:
mv [options] source [source2 ...] destination
与先前的语法相同,但首先指定目录,最后指定源文件:
mv [options] -t destination source [source2 ...]
选件
--backup[=vcm] | 使用版本控制方法vcm备份每个现有目标文件。如果VCM被省略,--backup的行为一样-b(备份的创建,使用默认的版本控制方法)。 |
-b | 与--backup类似,但不接受备份方法。而是使用VERSION_CONTROL环境变量指定的方法。如果未设置变量,则创建简单备份。 |
-f, --force | 始终覆盖现有文件,而不提示。如果您需要覆盖权限为只读的多个文件,这将很有用;如果未指定-f,则将提示您输入每个文件。 |
-i, --interactive | 无论文件的权限如何,在覆盖现有文件之前都会提示您。 |
-n, --no-clobber | 切勿覆盖任何现有文件。 |
注意:如果您指定了以上选项-i,-f或-n中的多个选项,则只有您指定的最后一个选项才生效。
--strip-trailing-斜杠 | 删除每个源参数中的所有尾部斜杠。 |
-S, --suffix=后缀 | 指定要用于所有备份文件的文件名后缀。默认值为“ 〜 ”。 |
-t, --target-directory=目标 | 将所有源移动到目录目标中。 |
-T, --no-target-directory | 将目标视为普通文件,而不是目录。 |
-u, --update | 如果文件较新,请不要覆盖它们。仅当目标文件早于源文件或目标文件不存在时,才会发生移动。 |
-v, --verbose | 提供详细的输出。打印每个移动文件的名称。 |
--help | 显示帮助消息,然后退出。 |
--版本 | 显示版本信息,然后退出。 |
备份档案
如果使用-b或--backup选项,则mv将重命名目标文件(如果存在),并在文件名后附加后缀。这将保存原始文件的副本,而不是覆盖它。
备份有两种类型:简单备份和编号备份。
- 简单备份将删除现有的备份文件(如果已存在)。仅保留一个备份文件。“简单”备份的默认后缀是波浪号(“ 〜 ”)。您可以使用--suffix选项或通过设置SIMPLE_BACKUP_SUFFIX 环境变量来更改此后缀。例如,file.txt将备份为file.txt〜。
- 带编号的备份会保留现有的备份文件,并以文件名中的数字递增创建其他备份。没有备份文件被删除。对于编号备份后缀是“〜N〜 ”,其中N是一个整数。例如,file.txt的将被备份为file.txt的。〜1〜 ,然后file.txt的。〜2〜 ,等
版本控制方法
提供了用于创建备份文件的其他规则,称为版本控制方法。可以使用--backup选项或通过设置环境变量VERSION_CONTROL来指定版本控制方法。方法是:
方法名称 | 描述 |
---|---|
没有, 关闭 | 即使给出了--backup选项,也不要进行备份。 |
编号, t | 进行编号备份。 |
现有的, 无 | 编号,如果已经存在编号的备份,简单的说明。 |
简单, 永不 | 始终进行简单的备份。 |
查看英文版
mv 例子
mv myfile.txt myfiles
将文件myfile.txt移到目录myfiles中。如果myfiles是文件,它将被覆盖。如果文件被标记为只读,但是您是该文件的所有者,则将在覆盖之前提示您。
mv myfiles myfiles2
如果myfiles是文件或目录,而myfiles2是目录,则将myfiles移到myfiles2中。如果myfiles2不存在,则将文件或目录myfiles重命名为myfiles2。
mv myfile.txt ../
将文件myfile.txt移到当前目录的父目录中。
mv -t myfiles myfile1 myfile2
将文件myfile1和myfile2移到目录myfiles中。
mv myfile1 myfile2 myfiles
与上一个命令相同。
mv -n file file2
如果file2存在并且是目录,则将文件移入其中。如果file2不存在,则将文件重命名为file2。如果file2存在并且是文件,则什么都不会发生。
mv -f file file2
如果file2存在并且是文件,它将被覆盖。
mv -i file file2
如果file2存在并且是文件,则提示:
mv: overwrite 'file2'?
输入“ y”,“是”,“是”或“ Y”将导致文件被覆盖。其他任何输入都会跳过该文件。
mv -fi file file2
与mv -i相同。覆盖前提示。该 f 选项被忽略。
mv -if file file2
与mv -f相同。无提示覆盖。在 i 选项被忽略。
mv My\ file.txt My\ file\ 2.txt
将文件“ My file.txt ”重命名为“ My file 2.txt ”。这里,文件名中的空格被转义,从而防止它们被解释为命令的一部分。
mv "My file.txt" "My file 2.txt"
与上一个命令相同。
mv "My file.txt" myfiles
该命令的结果:
- 如果myfiles是目录,则将My file.txt移动到myfiles中。
- 如果myfiles是文件,则My file.txt将重命名为myfiles,而原始myfiles将被覆盖。
- 如果myfiles不存在,则将My file.txt重命名为myfiles。
mv My*.txt myfiles
在这里,*是通配符,表示“任何字符的任何数字,包括零”。
- 如果myfiles是目录:所有扩展名为.txt(名称以My开头)的文件都将移入myfiles。
- 如果myfiles不存在或不是目录,则mv报告错误,并且不执行任何操作。
my My\ file??.txt myfiles
在这里,?是一个通配符,表示“零或任何字符之一”。它使用了两次,因此最多可以匹配两个字符。
- 如果myfiles是目录:名称为My file和.txt之间的零,一或两个字符的任何文件都将移入myfiles。
- 如果myfiles不存在或不是目录,则mv报告错误,并且不执行任何操作。
进行备份
mv -b file file2
如果存在file2,它将重命名为file2〜。
mv -b --suffix=.bak file file2
如果存在file2,它将被重命名为file2.bak。
mv --backup=numbered; mv file file2
如果存在file2,它将被重命名为file2。〜1〜。如果文件2。〜1〜存在,它将被重新命名file2。〜2〜等等。
VERSION_CONTROL=numbered mv -b file file2
与上一个命令相同。环境变量仅为此命令定义。
export VERSION_CONTROL=numbered; mv -b file file2
通过出口的VERSION_CONTROL环境变量中,所有MV -b当前会话将使用编号备份命令。
export VERSION_CONTROL=numbered; mv file file2
即使设置了VERSION_CONTROL变量,由于未指定-b(或--backup),因此不会创建任何备份。如果存在file2,则它将被覆盖。
使用正则表达式重命名文件
mv不解释正则表达式(regex)。
如果您需要重命名多个文件,使用旧复杂或细致入微映射到新的文件名,你应该使用重命名命令。
重命名接受perl正则表达式。例如:
rename 's/My\ file(..)/document$1/' My*
此命令会将文件My file.txt和My file 2.txt重命名为document.txt和document 2.txt。
查看英文版