众所周知,在 Linux 系统中,一切皆文件!
所以,对于文件的操作与管理在 Linux 系统中显得尤其重要,今天,就给大家介绍一个文件管理命令 mv 。
本文主要讲解 mv 命令的具体用法与实际中应该注意的点,让我们一起通过理论+实例的形式,一起来研究和学习 mv 命令。
mv 简介
mv 命令是 move 的缩写, 也是 Linux 系统下常用的命令之一,mv 命令常常用于移动、重命名文件或目录。或者将文件从一个目录移动到另一个目录中,如果将一个文件移动到一个已经存在的目标文件中,这时目标文件的内容会被此文件内容覆盖。
如果源为文件,而目标为目录,mv 将进行文件的位置移动。如果源为目录,则目标只能是目录(不能为文件),mv 将进行目录的重命令名。
mv 命令移动文件时,在目标不同的情况下,会有下面 4 种不同的结果:
如果目标是指定的某一个具体路径,则源文件会被移动到此目录下,且文件名不变。
如果目标不是目录,则源文件名(只能有一个)会变为此目标文件名,如果存在同名文件,则会覆盖己存在的同名文件。
如果源文件和目标文件在同一个目录下,mv 的作用就是修改文件名。
当目标是目录时,源文件或目录可以是多个,这时所有的源文件都会被移至目标目录下。且所有的文件都将保留以前的文件名。
语法格式
mv[选项]源文件或目录目标文件或目录 mv[options]sourcedestination
选项说明
-b#当目标文件存在时,覆盖之前创建一个备份 -f#如果移动的文件或目录与目标重复,则直接覆盖(无需确认) -i#交互式操作,覆盖前会提示用户进行确认操作,用户通过输入Y/N来确认是否覆盖 -u#若目标文件已存在,且与需移动的文件同名,只有在源文件比目标文件较新时,才会更新目标文件 -t#指定mv的目标目录,此选项使用于移动多个文件到一个目录的情况,目标文件在前,源文件在后。 -S<后缀>:#为备份文件指定(自定义的)后缀 -n#不覆盖任何现有文件 -T#将目标当作普通文件,而不是目录 -v#详细输出命令的执行过程信息
应用举例
重命名文件(目录)
命令格式:mv 源文件 目标文件 或 mv 源目录 目标目录
注意:我们在使用这个命令时必须保证源文件(目录)和目标文件(目录)在同一个目录下,并且目标文件(目录)不存在,否则使用这条命令的效果就由重命名变成文件(目录)的移动了。
首先,我们创建测试需要的文件与目录
[root@CentOS7-1mv]#ll total0 [root@CentOS7-1mv]#touchmvfiles [root@CentOS7-1mv]#mkdirmvdir [root@CentOS7-1mv]#ll total0 drwxr-xr-x2rootroot6Jan809:03mvdir -rw-r--r--1rootroot0Jan809:02mvfiles
进行重命名操作
[root@CentOS7-1mv]#mvmvfilesmvfilessssss [root@CentOS7-1mv]#mvmvdirmvdirectory [root@CentOS7-1mv]#ll total0 drwxr-xr-x2rootroot6Jan809:03mvdirectory -rw-r--r--1rootroot0Jan809:02mvfilessssss
如果需要命令执行的过程,可以加上参数-v
[root@CentOS7-1mv]#mv-vmvfilessssssmvfiles ‘mvfilessssss’->‘mvfiles’ [root@CentOS7-1mv]#mv-vmvdirectorymvdir ‘mvdirectory’->‘mvdir’
同时移动单个或多个文件(目录)
命令格式:mv 源文件(目录)1 源文件(目录)2 目标目录 或 mv *文件(目录) 目标目录
同时移动多个文件(目录)有两种方法:
第一种命令格式可以把多个文件(目录)同时移动到目标目录下,文件(目录)之间以空格分隔
第二种命令格式采用通配符将具有类似文件名或类型等的文件(目录)同时移动到目标目录下
注意:目标目录下如果存在相同的文件名或目录名,容易误操作将同名文件或目录覆盖。
创建测试用的文件和目录
[root@CentOS7-1mv]#touch1.txt2.txt3.txt [root@CentOS7-1mv]#mkdir123 [root@CentOS7-1mv]#ll total0 drwxr-xr-x2rootroot6Jan809:201 -rw-r--r--1rootroot0Jan809:191.txt drwxr-xr-x2rootroot6Jan809:202 -rw-r--r--1rootroot0Jan809:192.txt drwxr-xr-x2rootroot6Jan809:203 -rw-r--r--1rootroot0Jan809:193.txt
移动文件
[root@CentOS7-1mv]#mv-v1.txt2.txt3.txt/root/mv1/ ‘1.txt’->‘/root/mv1/1.txt’ ‘2.txt’->‘/root/mv1/2.txt’ ‘3.txt’->‘/root/mv1/3.txt’ [root@CentOS7-1mv]#ll/root/mv1/ total0 -rw-r--r--1rootroot0Jan809:191.txt -rw-r--r--1rootroot0Jan809:192.txt -rw-r--r--1rootroot0Jan809:193.txt
目录的移动其实也是一样操作,也非常的简单。如果目标位置有同名文件,我们不希望它被覆盖,可以加上-n选项
[root@CentOS7-1mv]#ll total0 drwxr-xr-x2rootroot6Jan809:201 drwxr-xr-x2rootroot6Jan809:202 drwxr-xr-x2rootroot6Jan809:203 -rw-r--r--1rootroot0Jan809:24test.txt [root@CentOS7-1mv]#ll/root/mv1/ total0 -rw-r--r--1rootroot0Jan809:191.txt -rw-r--r--1rootroot0Jan809:192.txt -rw-r--r--1rootroot0Jan809:193.txt -rw-r--r--1rootroot0Jan809:25test.txt [root@CentOS7-1mv]#mv-nvtest.txt/root/mv1/ [root@CentOS7-1mv]#ll/root/mv1/ total0 -rw-r--r--1rootroot0Jan809:191.txt -rw-r--r--1rootroot0Jan809:192.txt -rw-r--r--1rootroot0Jan809:193.txt -rw-r--r--1rootroot0Jan809:25test.txt
交互式覆盖文件
这个操作只需要添加一个参数(-i)即可
[root@CentOS7-1mv]#mvtest.txt-v-i/root/mv1/ mv:overwrite‘/root/mv1/test.txt’?y ‘test.txt’->‘/root/mv1/test.txt’ [root@CentOS7-1mv]#ll/root/mv1/ total0 -rw-r--r--1rootroot0Jan809:191.txt -rw-r--r--1rootroot0Jan809:192.txt -rw-r--r--1rootroot0Jan809:193.txt -rw-r--r--1rootroot0Jan809:24test.txt
仅当源文件(目录)较新时才覆盖
从上图中可以看出,mv 目录下的 test.txt 文件较新,如果我们执行反向操作,并且带上-u参数,来测试旧文件是否会覆盖掉新文件:
[root@CentOS7-1mv]#mv-v-u/root/mv1/test.txt./ [root@CentOS7-1mv]#ll total0 drwxr-xr-x2rootroot6Jan809:201 drwxr-xr-x2rootroot6Jan809:202 drwxr-xr-x2rootroot6Jan809:203 -rw-r--r--1rootroot0Jan809:36test.txt
结果表明并没有覆盖掉新文件,接下来,我们测试仅当源文件(目录)较新时才覆盖这个功能。
[root@CentOS7-1mv]#mv-v-u./test.txt/root/mv1/ mv:overwrite‘/root/mv1/test.txt’?y ‘./test.txt’->‘/root/mv1/test.txt’ [root@CentOS7-1mv]#ll/root/mv1/ total0 -rw-r--r--1rootroot0Jan809:191.txt -rw-r--r--1rootroot0Jan809:192.txt -rw-r--r--1rootroot0Jan809:193.txt -rw-r--r--1rootroot0Jan809:36test.txt
从上图结果中可以看出覆盖成功,这种操作可以用在大量文件移动时,也可以用在更新文件或目录时。
覆盖文件前创建备份
[root@CentOS7-1mv]#cattest1.txt 1 [root@CentOS7-1mv]#cattest2.txt 2
如果test2.txt存在,原来的文件会被备份
[root@CentOS7-1mv]#mv-v-btest1.txttest2.txt mv:overwrite‘test2.txt’?y ‘test1.txt’->‘test2.txt’(backup:‘test2.txt~’) [root@CentOS7-1mv]#ll total12 -rw-r--r--1rootroot2Jan809:49test2.txt -rw-r--r--1rootroot2Jan809:49test2.txt~ -rw-r--r--1rootroot2Jan809:49test3.txt [root@CentOS7-1mv]#cattest2.txt 1 [root@CentOS7-1mv]#cattest2.txt~ 2
在备份的过程中,我们还可以通过参数--suffix=xxx来自定义文件的后缀名:
[root@CentOS7-1mv]#cattest2.txt 1 [root@CentOS7-1mv]#cattest3.txt 3 [root@CentOS7-1mv]#mv-v-b--suffix=.baktest2.txttest3.txt mv:overwrite‘test3.txt’?y ‘test2.txt’->‘test3.txt’(backup:‘test3.txt.bak’) [root@CentOS7-1mv]#cattest3.txt 1 [root@CentOS7-1mv]#cattest3.txt.bak 3
以上就是民工哥今天给大家分享的关于 mv 命令的各种用法以及实例操作,欢迎大家分享你所知道的更多关于 mv 命令的用法,请在评论区留言。
审核编辑:汤梓红
-
测试
+关注
关注
8文章
5269浏览量
126599 -
Linux
+关注
关注
87文章
11292浏览量
209331 -
文件
+关注
关注
1文章
565浏览量
24727 -
命令
+关注
关注
5文章
683浏览量
22011
原文标题:看了这篇文章!我才知道 Linux mv 命令的真正使用方法
文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论