# mv 命令
[TOC]
mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
source表示源文件或目录,target表示目标文件或目录。
如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。
源文件被移至目标文件有两种不同的结果:
如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。
如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。
当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。
所有移到该目录下的文件都将保留以前的文件名。
>[danger] 注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
## 语法
`mv (选项) (参数)`
## 选项
~~~
--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
-t:--target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
~~~
## 参数
~~~
源文件:源文件列表。
目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;
如果“目标文件”是目录名则将源文件移动到“目标文件”下。
~~~
# 实例
## 将文件text1改名为text2
~~~
[root@localhost test]# touch text1
[root@localhost test]# ls
text1
[root@localhost test]# mv text1 text2
[root@localhost test]# ls
text2
~~~
### 将/usr/loca/src/nginx-1.2.9中的所有文件移动到当前目录(用.表示即可)中
~~~
[root@localhost test]# mv /usr/local/src/nginx-1.2.9 .
~~~
### 将文件log1.txt,log2.txt,log3.txt移动到目录test3中
~~~
[root@localhost test]# mv log.txt log2.txt log3.txt ./test3/
[root@localhost test3]# ls
log2.txt log3.txt log.txt
[root@localhost test3]# mv -t /test/test4/ log1.txt log2.txt log3.txt # 将这三个文件移动到test4目录中去
[root@localhost test3]# cd ..
[root@localhost test]# cd test4/
[root@localhost test4]# ll
log2.txt log3.txt log.txt
~~~
### 将文件file1改名为file2,即使file2存在,也是直接覆盖掉
命令:`mv -f log3.txt log2.txt`
输出:
~~~
[root@localhost test4]# ls
log2.txt log3.txt log.txt
[root@localhost test4]# mv log3.txt log.txt
mv:是否覆盖“log.txt”? n
[root@localhost test4]# mv log3.txt log.txt -f
[root@localhost test4]# ls
log2.txt log.txt
~~~
>[danger] 注意:log3.txt的内容直接覆盖了log2.txt内容,-f 这是个危险的选项,使用的时候一定要保持头脑清晰,一般情况下最好不用加上它。
### 文件被覆盖前做简单备份,前面加参数-b
命令:`mv log1.txt -b log2.txt`
输出:
~~~
[root@localhost test5]# ll
-rw-r--r-- 1 root root 25 10-28 07:02 log1.txt
-rw-r--r-- 1 root root 13 10-28 06:16 log2.txt
-rw-r--r-- 1 root root 29 10-28 06:05 test1.txt
drwxr-xr-x 2 root root 4096 10-25 17:56 test5-1
[root@localhost test5]# mv log1.txt -b log2.txt
mv:是否覆盖“log2.txt”? y
[root@localhost test5]# ll
-rw-r--r-- 1 root root 25 10-28 07:02 log2.txt
-rw-r--r-- 1 root root 13 10-28 06:16 log2.txt~
-rw-r--r-- 1 root root 29 10-28 06:05 test1.txt
drwxr-xr-x 2 root root 4096 10-25 17:56 test5-1
~~~
**说明:**
>[warning] -b 不接受参数,mv会去读取环境变量VERSION_CONTROL来作为备份策略。
> --backup该选项指定如果目标文件存在时的动作,共有四种备份策略:
> 1.CONTROL=none或off : 不备份。
> 2.CONTROL=numbered或t:数字编号的备份
> 3.CONTROL=existing或nil:如果存在以数字编号的备份,则继续编号备份m+1...n:
> 执行mv操作前已存在以数字编号的文件log2.txt.~1~,那么再次执行将产生log2.txt~2~,以次类推。如果之前没有以数字编号的文件,则使用下面讲到的简单备份。
> 4.CONTROL=simple或never:使用简单备份:在被覆盖前进行了简单备份,简单备份只能有一份,再次被覆盖时,简单备份也会被覆盖。
- Linux的安装
- Linux的软件安装管理
- Linux零碎的命令
- 了解ssh
- 系统调优及安全设置
- Linux系统中的硬链接和软连接
- Linux文件和目录的属性及权限
- 命令总结
- 文件目录管理命令
- cat
- cd
- cp
- ls
- mkdir
- mv
- rm
- touch
- vi
- 硬件检测内核shell命令
- echo
- alias
- dd
- diff
- date
- grep(重要)
- head
- rpm
- sed(重要)
- tree
- unalias
- yum
- seq
- su
- less
- more
- tail
- awk(重要)
- pwd
- history
- whoami
- find(重要)
- which
- vimdiff
- sudo
- wget
- ln
- chmod
- chown
- vim常用技巧
- scp
- 工作场景应用总结
- 自动删除n天前日志
- 删除一个目录下的所有文件但保留一个文件
- Linux软件安装
- php安装(apache版本)
- vsftpd安装
- git安装
- python安装
- LNMP安装
- LAMP安装I
- LAMP安装II
- svn安装
- svn在Linux下的命令操作
- svn钩子简介
- svn代码上传流程
- Crond介绍
- sersync应用指南
- 其他
- 小结一
- 系统调优重新整理tmp
- linux禁止root用户直接登录sshd并修改默认端口