每天一个linux命令:mv
更多精彩请关注:www.zicreate.com
1.命令功能
mv 即 move,可以用来移动文件或重命名文件。
mv 命令执行结果有如下两种情况:
- 如果目标文件是一个目录名,【源】是N个文件或目录,则所有的【源】都会被移至目标目录下。所有移到该目录下的文件都将保留以前的文件名。当【源】有多个时,目标必须是目录名。
- 如果目标文件是一个文件名,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。
- 如果源文件和目标文件在同一个目录下,mv 的作用就是重命名。
2.命令格式
mv [选项] 源文件或目录 目标文件或目录
3.命令参数
--backup[=CONTROL] 对每个存在的目标文件备份;共有如下四种备份策略:
- CONTROL=none或off : 不备份。
- CONTROL=numbered或t:数字编号的备份
- CONTROL=existing或nil:如果存在以数字编号的备份,则继续编号备份m+1...n:。执行mv操作前已存在以数字编号的文件log2.txt.~1~,那么再次执行将产生log2.txt~2~,以次类推。如果之前没有以数字编号的文件,则使用下面讲到的简单备份。
- CONTROL=simple或never:使用简单备份,在被覆盖前进行了简单备份,简单备份只能有一份,再次被覆盖时,简单备份也会被覆盖。
-b 和--backup 一样,但是不接受任何参数,mv会去读取环境变量VERSION_CONTROL来作为备份策略。
-f, --force 如果覆盖已存在文件,那么也不会有任何提示;
-i, --interactive 如果需要覆盖,那么会进行提示;
-n, --no-clobber 如果目标文件已存在,那么不会进行覆盖;
如果你指定了 -f, -i , -n 中的两个或者三个,那么只有最后一个有效。
-S, --suffix=SUFFIX 即替换通常的备份文件后缀,使用自定义后缀;
-t, --target-directory=DIRECTORY 该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后;该功能并无太大用处,不再讲解。
-u, --update 当目标文件不存在,或者源文件比目标文件的 修改时间 更新时,该命令才有效;
4.使用场景
场景1:重命名
将文件 test1.txt 移动到“/tmp/test/”目录下,并重名名为 test2.txt
$ mv test1.txt /tmp/test/test2.txt
场景2:将多个文件移动到指定目录下
[.trash]# ls #显示当前目录下文件
test1.txt test2.txt test3.txt test4.txt
[.trash]# mkdir subdir #创建一个目录“subdir”
[.trash]# mv test3.txt subdir/ #将test3.txt 移动到目录 “subdir”
[.trash]# mkdir /tmp/test/nulldir #在目标位置创建一个空目录
[.trash]# ls !$
ls /tmp/test/nulldir
[.trash]# mv * /tmp/test/nulldir/ #将当前目录下的文件以及目录都移动到目标目录下,注意,【源】有多个时,目标必须为目录名
[.trash]# ls /tmp/test/nulldir
subdir test1.txt test2.txt test4.txt
[.trash]# ls #移动后当前目录空了
场景3:”–backup”常见操作
[.trash]# ls /tmp/test/nulldir
subdir test1.txt test2.txt test4.txt
[.trash]# touch test1.txt test2.txt test3.txt test4.txt #创建文件
[.trash]# mv * /tmp/test/nulldir/ --backup=numbered
[.trash]# ls /tmp/test/nulldir
subdir test1.txt test1.txt.~1~ test2.txt test2.txt.~1~ test3.txt test4.txt test4.txt.~1~
[.trash]# touch test1.txt test2.txt test3.txt test4.txt
[.trash]# mv --backup=nil * /tmp/test/nulldir/
[.trash]# ls /tmp/test/nulldir
subdir test1.txt test1.txt.~1~ test1.txt.~2~ test2.txt test2.txt.~1~ test2.txt.~2~ test3.txt test3.txt.~1~ test4.txt test4.txt.~1~ test4.txt.~2~
场景4:其他命令参数操作
-S, –suffix=SUFFIX 即替换通常的备份文件后缀,使用自定义后缀;
[.trash]# \rm /tmp/test/nulldir/* -rf
[.trash]# ls /tmp/test/nulldir
[.trash]# touch test1.txt test2.txt test3.txt test4.txt
[.trash]# mv -S .mysuf * /tmp/test/nulldir/
[.trash]# ls /tmp/test/nulldir
test1.txt test2.txt test3.txt test4.txt
[.trash]# touch test1.txt test2.txt test3.txt test4.txt
[.trash]# mv -S .mysuf * /tmp/test/nulldir/
[.trash]# ls /tmp/test/nulldir
test1.txt test1.txt.mysuf test2.txt test2.txt.mysuf test3.txt test3.txt.mysuf test4.txt test4.txt.mysuf