对文件或目录重命名或者移动
mv命令 用来对文件或目录重新命名,或者将将源文件移至目标文件或者目标目录中。注意:mv 与 cp 的结果不同,mv 好像文件“搬家”,文件个数并未增加。而 cp 对文件进行复制,文件个数增加了。
mv命令是一个通用的Linux命令,它适用于几乎所有的Linux发行版,如Ubuntu, Debian, CentOS, Fedora, Red Hat等。 如果你的Linux系统中没有安装mv命令,你可以使用以下命令来安装它:
sudo apt install coreutils
sudo yum install coreutils
mv [选项] 源文件或目录 目标文件或目录
其中,源文件或目录是要移动或重命名的文件或目录,目标文件或目录是移动后或重命名后的文件或目录。如果源文件或目录有多个,那么目标文件或目录必须是一个已存在的目录。如果源文件或目录只有一个,那么目标文件或目录可以是一个不存在的文件或目录,此时相当于重命名操作。
-f 或 --force:强制覆盖已存在的目标文件或目录,不提示用户确认。
-i 或 --interactive:在覆盖已存在的目标文件或目录之前,提示用户确认。
-n 或 --no-clobber:不覆盖已存在的目标文件或目录,不提示用户确认。
-u 或 --update:只在源文件或目录比目标文件或目录新时才进行移动操作。
-v 或 --verbose:显示移动操作的详细信息。
-b 或 --backup:在覆盖已存在的目标文件或目录之前,对其进行备份。
-t 或 --target-directory:指定一个已存在的目标目录,将所有源文件或目录移动到该目录中。
-T 或 --no-target-directory:将源文件或目录视为单个实体,不管它是否是一个已存在的目录。
$ mv file1.txt file2.txt
$ mv ./* test
# 使用通配符*匹配所有以.txt结尾的文件
# 使用-t选项指定test为目标目录
$ mv -t test *.txt
$ mv test test2
$ mv -t /home/user test
# 直接指定目标文件或目录为/home/user/test2
$ mv test /home/user/test2
# 使用-i选项开启交互模式
$ mv -i file1.txt file2.txt
# 如果file2.txt已存在,会显示如下信息,并等待用户输入y或n
mv: overwrite 'file2.txt'?
# 使用-b选项开启备份模式
$ mv -b file1.txt file2.txt
# 如果file2.txt已存在,会将其备份为file2.txt~
# 使用-v选项开启详细模式
$ mv -v file1.txt file2.txt
# 会显示如下信息,表示file1.txt已被重命名为file2.txt
renamed 'file1.txt' -> 'file2.txt'
# 使用-n选项开启不覆盖模式
$ mv -n file1.txt file2.txt
# 如果file2.txt已存在,不会进行任何操作,也不会提示用户确认
# 使用-u选项开启更新模式
$ mv -u file1.txt file2.txt
# 如果file1.txt的修改时间比file2.txt的修改时间晚,会进行移动操作,否则不会进行任何操作,也不会提示用户确认
# 直接指定多个源文件或目录和一个已存在的目标目录作为参数,以空格分隔
$ mv file1.txt file2.txt test3 test4 /home/user/test5
# 会将file1.txt, file2.txt, test3, test4都移动到/home/user/test5这个已存在的目录中,并保持原来的名称,如果有同名的文件或目录,会覆盖它们,除非使用其他选项来改变这一行为。
# 直接指定多个源文件或目录和一个不存在的文件或目录作为参数,以空格分隔
$ mv file1.txt file2.txt test3 test4 /home/user/test5
# 会报错,提示/home/user/test5不是一个已存在的目录
mv: target '/home/user/test5' is not a directory
# 使用-T选项开启不作为目标目录模式
$ mv -T file1.txt /home/user/test5
# 会将file1.txt重命名为/home/user/test5,不管/home/user/test5是否是一个已存在的目录,如果是,会覆盖它,除非使用其他选项来改变这一行为。