每天一个Linux命令--(7):mv命令
mv
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
1.命令格式:
mv [选项] 源文件或目录 目标文件或目录
2.命令功能:
视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。
3.命令参数:
--backup[=CONTROL]
若需覆盖文件,则覆盖前先行备份。-b
若需覆盖文件,则覆盖前先行备份。 和--backup
一样,但是不能跟参数-f
--force
强制的意思,如果目标文件已经存在,不会询问而直接覆盖;-i
--interactive
如果目标文件已经存在,覆盖前会询问--strip-trailing-slashes
从每个源参数中,删除任何斜杠 remove any trailing slashes from each SOURCE argument
-S
--suffix=SUFFIX
如果目标文件已经存在,就会备份目标文件,并且要求给出目标文件的后缀-t
--target-directory=DIRECTORY
move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。-T
--no-target-directory
视目标为正常文件,当源文件和目标文件都是目录的时候,使用-T
,可以覆盖目标文件-u
--update
若目标文件已经存在,且 source 比较新,才会更新(update)-v
--verbose
展示操作结果详情version
版本help
帮助
4.命令实例:
实例1:文件改名
命令:mv 123.txt 123.log
输出:
[weblogic@web-mod newTest]$ ll
total 16
-rw-rw-r-- 1 weblogic weblogic 5 Jun 22 14:40 123.txt
[weblogic@web-mod newTest]$ mv 123.txt 123.log
[weblogic@web-mod newTest]$ ll
total 16
-rw-rw-r-- 1 weblogic weblogic 5 Jun 22 14:40 123.log
实例2:移动文件
命令:mv hello.log logs
输出:
[weblogic@web-mod test]$ ll
total 8
-rw-rw-r-- 1 weblogic weblogic 12 Jun 22 15:27 hello.log
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 15:27 logs
[weblogic@web-mod test]$ mv hello.log logs
[weblogic@web-mod test]$ tree logs
logs
`-- hello.log
0 directories, 1 file
实例3:
命令:mv 1.log 2.log 3.log logs
mv -t /home/project/newTest/test 1.log 2.log 3.log
输出:
[weblogic@web-mod test]$ ll
total 16
-rw-rw-r-- 1 weblogic weblogic 2 Jun 22 15:29 1.log
-rw-rw-r-- 1 weblogic weblogic 2 Jun 22 15:29 2.log
-rw-rw-r-- 1 weblogic weblogic 2 Jun 22 15:30 3.log
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 15:27 logs
[weblogic@web-mod test]$ mv 1.log 2.log 3.log logs
[weblogic@web-mod test]$ ll
total 4
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 15:35 logs
[weblogic@web-mod test]$ tree logs
logs
|-- 1.log
|-- 2.log
|-- 3.log
`-- hello.log
0 directories, 4 files
[weblogic@web-mod logs]$ ll
total 16
-rw-rw-r-- 1 weblogic weblogic 2 Jun 22 15:29 1.log
-rw-rw-r-- 1 weblogic weblogic 2 Jun 22 15:29 2.log
-rw-rw-r-- 1 weblogic weblogic 2 Jun 22 15:30 3.log
-rw-rw-r-- 1 weblogic weblogic 12 Jun 22 15:27 hello.log
[weblogic@web-mod logs]$ mv -t /home/project/newTest/test 1.log 2.log 3.log
[weblogic@web-mod logs]$ tree /home/project/newTest/test
/home/project/newTest/test
|-- 1.log
|-- 2.log
|-- 3.log
`-- logs
`-- hello.log
实例4:将文件file1改名为file2,如果file2已经存在,则询问是否覆盖
命令:mv -i log1.txt log2.txt
输出:
[weblogic@web-mod logs]$ ll
total 12
-rw-rw-r-- 1 weblogic weblogic 12 Jun 22 15:27 hello.log
-rw-rw-r-- 1 weblogic weblogic 5 Jun 22 15:50 log1.txt
-rw-rw-r-- 1 weblogic weblogic 5 Jun 22 15:50 log2.txt
[weblogic@web-mod logs]$ mv log1.txt log2.txt -i
mv: overwrite `log2.txt'? y
[weblogic@web-mod logs]$ ll
total 8
-rw-rw-r-- 1 weblogic weblogic 12 Jun 22 15:27 hello.log
-rw-rw-r-- 1 weblogic weblogic 5 Jun 22 15:50 log2.txt
[weblogic@web-mod logs]$
实例5:将文件file1改名为file2,即使file2存在,也是直接覆盖掉。
命令:mv -f log1.txt log2.txt
输出:
[weblogic@web-mod logs]$ ll
total 12
-rw-rw-r-- 1 weblogic weblogic 12 Jun 22 15:27 hello.log
-rw-rw-r-- 1 weblogic weblogic 5 Jun 22 15:52 log1.txt
-rw-rw-r-- 1 weblogic weblogic 5 Jun 22 15:50 log2.txt
[weblogic@web-mod logs]$ mv -f log1.txt log2.txt
[weblogic@web-mod logs]$ ll
total 8
-rw-rw-r-- 1 weblogic weblogic 12 Jun 22 15:27 hello.log
-rw-rw-r-- 1 weblogic weblogic 5 Jun 22 15:52 log2.txt
[weblogic@web-mod logs]$
实例6:目录的移动
命令:mv dir1 dir2
输出:
[weblogic@web-mod test]$ ll
total 20
-rw-rw-r-- 1 weblogic weblogic 2 Jun 22 15:29 1.log
-rw-rw-r-- 1 weblogic weblogic 2 Jun 22 15:29 2.log
-rw-rw-r-- 1 weblogic weblogic 2 Jun 22 15:30 3.log
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 15:55 logs
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 15:55 txts
[weblogic@web-mod test]$ mv txts logs
[weblogic@web-mod test]$ tree logs
logs
|-- hello.log
`-- txts
1 directory, 1 file
[weblogic@web-mod test]$
说明:如果目录dir2不存在,将目录dir1改名为dir2;否则,将dir1移动到dir2中。
实例7:同时存在文件夹 A 和 B,将A 改名为B ,并将B改名为 B.bak,并展示操作详情.
命令:mv -Tv A B -S .bak
输出:
[weblogic@web-mod logs]$ ll
total 8
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 16:01 A
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 15:59 B
[weblogic@web-mod logs]$ mv -Tv A B -S .bak
`A' -> `B' (backup: `B.bak')
[weblogic@web-mod logs]$ ll
total 8
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 16:01 B
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 15:59 B.bak
[weblogic@web-mod logs]$
说明:-T
用于文件夹的重命名(目标文件夹存在时) , -S
根据后缀名备份,-v
展示详情
实例8:移动当前文件夹下的所有文件到上一级目录
命令:mv * ../
输出:
[weblogic@web-mod logs]$ ll
total 8
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 16:01 B
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 15:59 B.bak
[weblogic@web-mod logs]$ mv * ../
[weblogic@web-mod logs]$ cd ..
[weblogic@web-mod test]$ ll
total 24
-rw-rw-r-- 1 weblogic weblogic 2 Jun 22 15:29 1.log
-rw-rw-r-- 1 weblogic weblogic 2 Jun 22 15:29 2.log
-rw-rw-r-- 1 weblogic weblogic 2 Jun 22 15:30 3.log
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 16:01 B
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 15:59 B.bak
drwxrwxr-x 2 weblogic weblogic 4096 Jun 22 16:09 logs
[weblogic@web-mod test]$
实例9:文件被覆盖前做简单备份,前面加参数-b
命令:mv log1.txt -b log2.txt
输出:
[weblogic@web-mod logs]$ ll
total 8
-rw-rw-r-- 1 weblogic weblogic 5 Jun 22 16:12 log1.txt
-rw-rw-r-- 1 weblogic weblogic 5 Jun 22 16:12 log2.txt
[weblogic@web-mod logs]$ mv log1.txt -b log2.txt
[weblogic@web-mod logs]$ ll
total 8
-rw-rw-r-- 1 weblogic weblogic 5 Jun 22 16:12 log2.txt
-rw-rw-r-- 1 weblogic weblogic 5 Jun 22 16:12 log2.txt~
说明:
-b
不接受参数,mv会去读取环境变量VERSION_CONTROL来作为备份策略。--backup
该选项指定如果目标文件存在时的动作,共有四种备份策略:CONTROL=none或off : 不备份。
CONTROL=numbered或t:数字编号的备份
CONTROL=existing或nil:如果存在以数字编号的备份,则继续编号备份m+1…n:执行mv操作前已存在以数字编号的文件log2.txt.1,那么再次执行将产生log2.txt2,以次类推。如果之前没有以数字编号的文件,则使用下面讲到的简单备份。
CONTROL=simple或never:使用简单备份:在被覆盖前进行了简单备份,简单备份只能有一份,再次被覆盖时,简单备份也会被覆盖。