1.命令作用
将源文件/目录重命名为目标文件/目录,或将源文件/目录移动到其他目录(Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.)。
2.命令语法
Usage: mv [OPTION]... [-T] SOURCE DEST
or: mv [OPTION]... SOURCE... DIRECTORY
or: mv [OPTION]... -t DIRECTORY SOURCE...
3.参数详解
OPTION:
- --backup[=CONTROL],对每个已经存在的目标文件进行备份,CONTROL可设置如下参数:
- none, off,永远不要做备份(即使提供了--backup参数)
- numbered, t,进行编号备份
- existing, nil,如果存在编号备份,则编号,否则简单
- simple, never,总是做简单的备份
- 备份名后缀,默认为'~'符号,除非使用--suffix进行设置(实际测试无明显效果)
- -b,类似于--backup,但-b不接受任何参数,即只能进行简单备份
- -f, --force,重写前不提示;即目标文件已经存在的情况下直接覆盖
- -i, --interactive,覆盖前提示;即目标文件已经存在的情况下会提示是否覆盖
- -n, --no-clobber,不覆盖现有文件;即如目标文件已经存在,执行不报错也不会做任何操作
- --strip-trailing-slashes,从每个SOURCE参数中删除任何尾随斜杠
- -S, --suffix=SUFFIX,与--backup命令一起使用时,指定/覆盖默认的备份名后缀(无明显效果)
- -t, --target-directory=DIRECTORY,将所有源文件/目录移动到-t参数指定的目录中
- -T, --no-target-directory,将DEST视为普通文件
- -u, --update,仅在源文件比目标文件版本更新,或目标文件缺失/不存在时移动或重命名
- -v, --verbose,解释正在做什么
- -Z, --context,将目标文件的SELinux安全上下文设置为默认类型(无明显效果)
注意:如果指定了-i、-f、-n中的多个,则仅最后一个生效。
4.常用用例
4.1.重命名文件或者目录
[root@node2 Desktop]# ll
total 0
drwxr-xr-x. 2 root root 6 Feb 23 16:39 dir1
-rw-r--r--. 1 root root 0 Feb 23 16:39 file1.txt
[root@node2 Desktop]# mv dir1 dir2 ## 将目录dir1重命名为dir2
[root@node2 Desktop]# mv file1.txt file2.txt ## 将文件file1.txt重命名为file2.txt
[root@node2 Desktop]# ll ## 查看重命名后目录文件情况
total 0
drwxr-xr-x. 2 root root 6 Feb 23 16:39 dir2
-rw-r--r--. 1 root root 0 Feb 23 16:39 file2.txt
[root@node2 Desktop]#
4.2.移动文件或目录
[root@node2 Desktop]# ll
total 0
drwxr-xr-x. 2 root root 6 Feb 23 16:40 dir1
drwxr-xr-x. 2 root root 6 Feb 23 16:39 dir2
-rw-r--r--. 1 root root 0 Feb 23 16:39 file2.txt
[root@node2 Desktop]# mv dir2 dir1 ## 将目录dir2移动到目录dir1中
[root@node2 Desktop]# mv file2.txt dir1 ## 将文件file2.txt移动到目录dir1中
[root@node2 Desktop]# ll ## 查看移动后的目录文件情况
total 0
drwxr-xr-x. 3 root root 35 Feb 23 16:40 dir1
[root@node2 Desktop]# ll dir1
total 0
drwxr-xr-x. 2 root root 6 Feb 23 16:39 dir2
-rw-r--r--. 1 root root 0 Feb 23 16:39 file2.txt
[root@node2 Desktop]#
4.3.重命名目标文件已存在的各自处理
4.3.1.提示是否覆盖
[root@node2 Desktop]# ll
total 0
-rw-r--r--. 1 root root 0 Feb 23 16:44 file1.txt
-rw-r--r--. 1 root root 0 Feb 23 16:44 file2.txt
[root@node2 Desktop]# mv file1.txt file2.txt ## 默认提示是否覆盖,输入y直接覆盖,输入n或者其他不做任何操作
mv: overwrite ‘file2.txt’? y
[root@node2 Desktop]# ll
total 0
-rw-r--r--. 1 root root 0 Feb 23 16:44 file2.txt
[root@node2 Desktop]#
#####################################################################################
[root@node2 Desktop]# ll
total 0
-rw-r--r--. 1 root root 0 Feb 23 16:46 file1.txt
-rw-r--r--. 1 root root 0 Feb 23 16:46 file2.txt
[root@node2 Desktop]# mv -i file1.txt file2.txt ## -i参数提示是否覆盖
mv: overwrite ‘file2.txt’? y
[root@node2 Desktop]# ll
total 0
-rw-r--r--. 1 root root 0 Feb 23 16:46 file2.txt
[root@node2 Desktop]#
4.3.2.强制覆盖
[root@node2 Desktop]# ll
total 0
-rw-r--r--. 1 root root 0 Feb 23 16:48 file1.txt
-rw-r--r--. 1 root root 0 Feb 23 16:48 file2.txt
[root@node2 Desktop]# mv -f file1.txt file2.txt ## -f参数,直接强制覆盖,不做提示
[root@node2 Desktop]# ll
total 0
-rw-r--r--. 1 root root 0 Feb 23 16:48 file2.txt
[root@node2 Desktop]#
4.3.3.备份覆盖
[root@node2 Desktop]# ll
total 8
-rw-r--r--. 1 root root 57 Feb 23 16:51 file1.txt
-rw-r--r--. 1 root root 7 Feb 23 16:51 file2.txt
[root@node2 Desktop]# mv --backup=t file1.txt file2.txt ## 将file2.txt进行备份,然后file1.txt重命名为file2.txt
mv: overwrite ‘file2.txt’? y
[root@node2 Desktop]# ll ## 查看两个文件大小可观察备份的与重命名的文件
total 8
-rw-r--r--. 1 root root 57 Feb 23 16:51 file2.txt
-rw-r--r--. 1 root root 7 Feb 23 16:51 file2.txt.~1~
[root@node2 Desktop]#
4.3.4.根据文件修改时间来判定是否执行
[root@node2 Desktop]# ll
total 8
-rw-r--r--. 1 root root 57 Feb 23 16:51 file1.txt
-rw-r--r--. 1 root root 57 Feb 23 16:54 file2.txt
[root@node2 Desktop]# mv -u file1.txt file2.txt ## 看时间文件file2.txt比file1.txt新,所以执行不做任何操作
[root@node2 Desktop]# ll
total 8
-rw-r--r--. 1 root root 57 Feb 23 16:51 file1.txt
-rw-r--r--. 1 root root 57 Feb 23 16:54 file2.txt
[root@node2 Desktop]#
[root@node2 Desktop]# mv -u file2.txt file1.txt ## 看时间文件file2.txt比file1.txt新,所以提示是否覆盖旧一点的file1.txt文件
mv: overwrite ‘file1.txt’? y
[root@node2 Desktop]# ll
total 4
-rw-r--r--. 1 root root 57 Feb 23 16:54 file1.txt
[root@node2 Desktop]#
4.4.打印执行详细信息
[root@node2 Desktop]# ll
total 8
-rw-r--r--. 1 root root 57 Feb 23 16:54 file1.txt
-rw-r--r--. 1 root root 57 Feb 23 17:01 file2.txt
[root@node2 Desktop]# mv -v file1.txt file2.txt ## -v参数打印详细执行过程
mv: overwrite ‘file2.txt’? y
‘file1.txt’ -> ‘file2.txt’
[root@node2 Desktop]#