mv命令用来对文件或目录从新命名,或者将文件从一个目录移到另外一个目录中。html
注意事项:mv与cp的结果不一样,mv好像文件“搬家”,文件个数并未增长。而cp对文件进行复制,文件个数增长了。less
(1)用法:this
用法: mv [选项]... [-T] 源文件 目标文件 spa
或: mv [选项]... 源文件... 目录 翻译
或: mv [选项]... -t 目录 源文件... code
(2)功能:orm
将源文件重命名为目标文件,或将源文件移动至指定目录。htm
(3)选项参数:blog
1) -b: 当文件存在时,覆盖前,为其建立一个备份排序
2) -f 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录
3) -i 交互式操做,覆盖前先行询问用户,若是源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。这样能够避免误将文件覆盖。
4) -f -force 强制的意思,若是目标文件已经存在,不会询问而直接覆盖
5) -u 若目标文件已经存在,且 source 比较新,才会更新(update)
(4)实例:
1)[sunjimeng@localhost Document]$ mv text1 mytext 因为此处源文件test1与目标文件是在同一目录下,能够看做仅仅是改了文件的名字
[sunjimeng@localhost Document]$ ll //目录下为空 总用量 0 [sunjimeng@localhost Document]$ cat >text1 <<EOF //新建文件文档并从标准输入中输入数据到文件 > I am MenAngel > PWD=$(pwd) > I am testing the order of mv! > EOF [sunjimeng@localhost Document]$ ll 总用量 4 -rw-rw-r--. 1 sunjimeng sunjimeng 73 5月 5 22:02 text1 [sunjimeng@localhost Document]$ mv text1 mytext //执行mv命令 [sunjimeng@localhost Document]$ cat mytext I am MenAngel PWD=/home/sunjimeng/Document I am testing the order of mv! [sunjimeng@localhost Document]$ ll //可见已经更名 总用量 4 -rw-rw-r--. 1 sunjimeng sunjimeng 73 5月 5 22:02 mytext [sunjimeng@localhost Document]$
2)[sunjimeng@localhost Document]$ mv mytext{,.txt} 与[sunjimeng@localhost Document]$ mv text text.txt 给文件名增长后缀
[sunjimeng@localhost Document]$ mv mytext{,.txt} //增长后缀名的原始方法 [sunjimeng@localhost Document]$ ll 总用量 4 -rw-rw-r--. 1 sunjimeng sunjimeng 73 5月 5 22:02 mytext.txt [sunjimeng@localhost Document]$ touch text [sunjimeng@localhost Document]$ ll 总用量 4 -rw-rw-r--. 1 sunjimeng sunjimeng 73 5月 5 22:02 mytext.txt -rw-rw-r--. 1 sunjimeng sunjimeng 0 5月 5 22:08 text [sunjimeng@localhost Document]$ mv text text.txt //利用mv的更名目录增长后缀 [sunjimeng@localhost Document]$ ll 总用量 4 -rw-rw-r--. 1 sunjimeng sunjimeng 73 5月 5 22:02 mytext.txt -rw-rw-r--. 1 sunjimeng sunjimeng 0 5月 5 22:08 text.txt
3)[root@localhost Documents]# mv ../Document/* . 将文件从源目录移动到目标目录,这里源目录和目标目录能够任意指定。.表明当前目录
[sunjimeng@localhost Document]$ ll //Document下游两个文件 总用量 4 -rw-rw-r--. 1 sunjimeng sunjimeng 73 5月 5 22:02 mytext.txt -rw-rw-r--. 1 sunjimeng sunjimeng 0 5月 5 22:08 text.txt [sunjimeng@localhost Document]$ cd ../Documents //进入同级兄弟目录Documents,发现其下为空 [sunjimeng@localhost Documents]$ ll 总用量 0 [sunjimeng@localhost Documents]$ mv ../Document/* . //将Document下的全部文件(*),移动到当前目录(.)。 mv: 没法将"../Document/mytext.txt" 移动至"./mytext.txt": 权限不够 //Linux用组名和用户名来管理文件,此时当前用户没有权限移动文件,必须改成root用户 mv: 没法将"../Document/text.txt" 移动至"./text.txt": 权限不够 [sunjimeng@localhost Documents]$ su root 密码: ABRT 已检测到 '1' 个问题。预了解详细信息请执行:abrt-cli list --since 1462423345 [root@localhost Documents]# mv ../Document/* . [root@localhost Documents]# ll //移动完成 总用量 4 -rw-rw-r--. 1 sunjimeng sunjimeng 73 5月 5 22:02 mytext.txt -rw-rw-r--. 1 sunjimeng sunjimeng 0 5月 5 22:08 text.txt [root@localhost Documents]# ls -l ../Document //查看Document目录已经没有任何东西 总用量 0
4)[root@localhost Documents]# mv -t ../Document ./* 功能同(3),但区别是源文件的路径和目标路径的位置发生了变化
[root@localhost Documents]# ll 总用量 4 -rw-rw-r--. 1 sunjimeng sunjimeng 73 5月 5 22:02 mytext.txt -rw-rw-r--. 1 sunjimeng sunjimeng 0 5月 5 22:08 text.txt [root@localhost Documents]# mv -t ./* ../Document //-t参数的功能就是让他们的位置发生变化,这里第一个参数是目标路径 mv: 目标"./mytext.txt" 不是目录 [root@localhost Documents]# mv -t ../Document ./* //位置调换一下就好了 [root@localhost Documents]# ll 总用量 0 [root@localhost Documents]# ll 总用量 0 [root@localhost Documents]# ls -l ../Document 总用量 4 -rw-rw-r--. 1 sunjimeng sunjimeng 73 5月 5 22:02 mytext.txt -rw-rw-r--. 1 sunjimeng sunjimeng 0 5月 5 22:08 text.txt
5)[root@localhost Document]# mv mytext.txt mytext 若是第二个参数不是目录名,才将源文件更名,不然,移动源文件到该目录下(与实例1做比较)
[root@localhost Document]# mkdir mytext [root@localhost Document]# ll 总用量 4 drwxr-xr-x. 2 root root 6 5月 5 22:34 mytext -rw-rw-r--. 1 sunjimeng sunjimeng 73 5月 5 22:02 mytext.txt -rw-rw-r--. 1 sunjimeng sunjimeng 0 5月 5 22:08 text [root@localhost Document]# mv mytext.txt mytext //与实例一不一样的是,这里mytext是个目录 [root@localhost Document]# ll 总用量 0 drwxr-xr-x. 2 root root 23 5月 5 22:35 mytext -rw-rw-r--. 1 sunjimeng sunjimeng 0 5月 5 22:08 text [root@localhost Document]# ls -l mytext 总用量 4 -rw-rw-r--. 1 sunjimeng sunjimeng 73 5月 5 22:02 mytext.txt
6)[root@localhost Document]# mv -b myword text 源文件和目标文件都是存在的,所以会有覆盖提醒,-b用于在覆盖时备份文件
[root@localhost Document]# cat >myword <<EOF > this is my word! > EOF [root@localhost Document]# cat >text <<EOF > this is my text! > EOF [root@localhost Document]# mv -b myword text //在一个文件即将覆盖另外一个文件时,默认是提醒的,因此加上-i参数和不加是同样的 mv:是否覆盖"text"? y [root@localhost Document]# cat myword cat: myword: 没有那个文件或目录 [root@localhost Document]# cat text this is my word! [root@localhost Document]# ll 总用量 8 drwxr-xr-x. 2 root root 23 5月 5 22:35 mytext //这里text里存的是前面myword的内容,text的内容备份到text~中,须要特殊软件才能查看 -rw-r--r--. 1 root root 17 5月 5 22:41 text -rw-rw-r--. 1 sunjimeng sunjimeng 17 5月 5 22:41 text~
7) [root@localhost text]# mv * ../ 将当前目录下的全部内容移动到父级目录(特殊状况)
[root@localhost Document]# mkdir text [root@localhost Document]# touch ./text/{text1,text2,text3} [root@localhost Document]# cd text [root@localhost text]# mv * ../ [root@localhost text]# cd ../ [root@localhost Document]# ll 总用量 0 drwxr-xr-x. 2 root root 6 5月 5 22:57 text -rw-r--r--. 1 root root 0 5月 5 22:57 text1 -rw-r--r--. 1 root root 0 5月 5 22:57 text2 -rw-r--r--. 1 root root 0 5月 5 22:57 text3
8)[root@localhost Document]# mv -f text2 text3 强制执行操做,并不作任何提醒
9)[root@localhost Document]# mv -i text2 text3 加不加-i在覆盖时都会提醒
[root@localhost Document]# ll 总用量 0 drwxr-xr-x. 2 root root 6 5月 5 23:05 text -rw-r--r--. 1 root root 0 5月 5 22:57 text2 -rw-r--r--. 1 root root 0 5月 5 22:57 text3 -rw-r--r--. 1 root root 0 5月 5 22:57 text4 [root@localhost Document]# mv text2 text3 mv:是否覆盖"text3"? n [root@localhost Document]# mv -i text2 text3 mv:是否覆盖"text3"? n [root@localhost Document]# mv -f text2 text3 [root@localhost Document]# ll 总用量 0 drwxr-xr-x. 2 root root 6 5月 5 23:05 text -rw-r--r--. 1 root root 0 5月 5 22:57 text3 -rw-r--r--. 1 root root 0 5月 5 22:57 text4
10)[root@localhost Document]# mv Dir text 将Dir目录移动到text目录下(text存在时),若是不存在直接将Dir更名为text
[root@localhost Document]# mkdir testDir [root@localhost Document]# ll //下面的操做先将文件text3和text4放到textDir目录下 总用量 0 drwxr-xr-x. 2 root root 6 5月 5 23:09 testDir drwxr-xr-x. 2 root root 6 5月 5 23:05 text -rw-r--r--. 1 root root 0 5月 5 22:57 text3 -rw-r--r--. 1 root root 0 5月 5 22:57 text4 [root@localhost Document]# mv {text3,text4} ./testDir [root@localhost Document]# mv testDir Dir //因为Dir不存在,因此testDir更名为Dir [root@localhost Document]# mv Dir text //因为text是存在的,因此将Dir移到text目录下 [root@localhost Document]# ll 总用量 0 drwxr-xr-x. 3 root root 16 5月 5 23:10 text //下面验证了这一点 [root@localhost Document]# cd text [root@localhost text]# ll 总用量 0 drwxr-xr-x. 2 root root 30 5月 5 23:09 Dir [root@localhost text]# cd Dir [root@localhost Dir]# ll 总用量 0 -rw-r--r--. 1 root root 0 5月 5 22:57 text3 -rw-r--r--. 1 root root 0 5月 5 22:57 text4
11)[root@localhost /]# mv --help
[root@localhost /]# mv --help 用法:mv [选项]... [-T] 源文件 目标文件 或:mv [选项]... 源文件... 目录 或:mv [选项]... -t 目录 源文件... Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY. Mandatory arguments to long options are mandatory for short options too. --backup[=CONTROL] 为每一个已存在的目标文件建立备份 -b 相似--backup 但不接受参数 -f, --force 覆盖前不询问 -i, --interactive 覆盖前询问 -n, --no-clobber 不覆盖已存在文件 若是您指定了-i、-f、-n 中的多个,仅最后一个生效。 --strip-trailing-slashes 去掉每一个源文件参数尾部的斜线 -S, --suffix=SUFFIX 替换经常使用的备份文件后缀 -t, --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY -T, --no-target-directory treat DEST as a normal file -u, --update move only when the SOURCE file is newer than the destination file or when the destination file is missing -v, --verbose explain what is being done -Z, --context set SELinux security context of destination file to default type --help 显示此帮助信息并退出 --version 显示版本信息并退出 The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX. The version control method may be selected via the --backup option or through the VERSION_CONTROL environment variable. Here are the values: none, off 不进行备份(即便使用了--backup 选项) numbered, t 备份文件加上数字进行排序 existing, nil 如有数字的备份文件已经存在则使用数字,不然使用普通方式备份 simple, never 永远使用普通方式备份 GNU coreutils online help: <http://www.gnu.org/software/coreutils/> 请向<http://translationproject.org/team/zh_CN.html> 报告mv 的翻译错误 要获取完整文档,请运行:info coreutils 'mv invocation'
12)[root@localhost /]# mv --version
[root@localhost /]# mv --version mv (GNU coreutils) 8.22 Copyright (C) 2013 Free Software Foundation, Inc. 许可证:GPLv3+:GNU 通用公共许可证第3 版或更新版本<http://gnu.org/licenses/gpl.html>。 本软件是自由软件:您能够自由修改和从新发布它。 在法律范围内没有其余保证。 由Mike Parker、David MacKenzie 和Jim Meyering 编写。
(5)其余:
用-b作备份时:
-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:使用简单备份:在被覆盖前进行了简单备份,简单备份只能有一份,再次被覆盖时,简单备份也会被覆盖。