眾所周知,在 Linux 系統(tǒng)中,一切皆文件!
所以,對于文件的操作與管理在 Linux 系統(tǒng)中顯得尤其重要,今天,就給大家介紹一個文件管理命令 mv 。
本文主要講解 mv 命令的具體用法與實(shí)際中應(yīng)該注意的點(diǎn),讓我們一起通過理論+實(shí)例的形式,一起來研究和學(xué)習(xí) mv 命令。
mv 簡介
mv 命令是 move 的縮寫, 也是 Linux 系統(tǒng)下常用的命令之一,mv 命令常常用于移動、重命名文件或目錄?;蛘邔⑽募囊粋€目錄移動到另一個目錄中,如果將一個文件移動到一個已經(jīng)存在的目標(biāo)文件中,這時目標(biāo)文件的內(nèi)容會被此文件內(nèi)容覆蓋。
如果源為文件,而目標(biāo)為目錄,mv 將進(jìn)行文件的位置移動。如果源為目錄,則目標(biāo)只能是目錄(不能為文件),mv 將進(jìn)行目錄的重命令名。
mv 命令移動文件時,在目標(biāo)不同的情況下,會有下面 4 種不同的結(jié)果:
如果目標(biāo)是指定的某一個具體路徑,則源文件會被移動到此目錄下,且文件名不變。
如果目標(biāo)不是目錄,則源文件名(只能有一個)會變?yōu)榇四繕?biāo)文件名,如果存在同名文件,則會覆蓋己存在的同名文件。
如果源文件和目標(biāo)文件在同一個目錄下,mv 的作用就是修改文件名。
當(dāng)目標(biāo)是目錄時,源文件或目錄可以是多個,這時所有的源文件都會被移至目標(biāo)目錄下。且所有的文件都將保留以前的文件名。
語法格式
mv[選項(xiàng)]源文件或目錄目標(biāo)文件或目錄 mv[options]sourcedestination
選項(xiàng)說明
-b#當(dāng)目標(biāo)文件存在時,覆蓋之前創(chuàng)建一個備份 -f#如果移動的文件或目錄與目標(biāo)重復(fù),則直接覆蓋(無需確認(rèn)) -i#交互式操作,覆蓋前會提示用戶進(jìn)行確認(rèn)操作,用戶通過輸入Y/N來確認(rèn)是否覆蓋 -u#若目標(biāo)文件已存在,且與需移動的文件同名,只有在源文件比目標(biāo)文件較新時,才會更新目標(biāo)文件 -t#指定mv的目標(biāo)目錄,此選項(xiàng)使用于移動多個文件到一個目錄的情況,目標(biāo)文件在前,源文件在后。 -S<后綴>:#為備份文件指定(自定義的)后綴 -n#不覆蓋任何現(xiàn)有文件 -T#將目標(biāo)當(dāng)作普通文件,而不是目錄 -v#詳細(xì)輸出命令的執(zhí)行過程信息
應(yīng)用舉例
重命名文件(目錄)
命令格式:mv 源文件 目標(biāo)文件 或 mv 源目錄 目標(biāo)目錄
注意:我們在使用這個命令時必須保證源文件(目錄)和目標(biāo)文件(目錄)在同一個目錄下,并且目標(biāo)文件(目錄)不存在,否則使用這條命令的效果就由重命名變成文件(目錄)的移動了。
首先,我們創(chuàng)建測試需要的文件與目錄
[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
進(jìn)行重命名操作
[root@CentOS7-1mv]#mvmvfilesmvfilessssss [root@CentOS7-1mv]#mvmvdirmvdirectory [root@CentOS7-1mv]#ll total0 drwxr-xr-x2rootroot6Jan809:03mvdirectory -rw-r--r--1rootroot0Jan809:02mvfilessssss
如果需要命令執(zhí)行的過程,可以加上參數(shù)-v
[root@CentOS7-1mv]#mv-vmvfilessssssmvfiles ‘mvfilessssss’->‘mvfiles’ [root@CentOS7-1mv]#mv-vmvdirectorymvdir ‘mvdirectory’->‘mvdir’
![1edfcdfc-ca69-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/01/wKgaomTnfRSAQmayAACX6TJQjt4894.png)
同時移動單個或多個文件(目錄)
命令格式:mv 源文件(目錄)1 源文件(目錄)2 目標(biāo)目錄 或 mv *文件(目錄) 目標(biāo)目錄
同時移動多個文件(目錄)有兩種方法:
第一種命令格式可以把多個文件(目錄)同時移動到目標(biāo)目錄下,文件(目錄)之間以空格分隔
第二種命令格式采用通配符將具有類似文件名或類型等的文件(目錄)同時移動到目標(biāo)目錄下
注意:目標(biāo)目錄下如果存在相同的文件名或目錄名,容易誤操作將同名文件或目錄覆蓋。
創(chuàng)建測試用的文件和目錄
[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
目錄的移動其實(shí)也是一樣操作,也非常的簡單。如果目標(biāo)位置有同名文件,我們不希望它被覆蓋,可以加上-n選項(xiàng)
[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
![1f260182-ca69-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/01/wKgaomTnfRSAXqljAACdFVIddNw940.png)
交互式覆蓋文件
這個操作只需要添加一個參數(shù)(-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
![1f5119b2-ca69-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9A/01/wKgaomTnfRSATeXLAABfQb-ZaJU000.png)
僅當(dāng)源文件(目錄)較新時才覆蓋
從上圖中可以看出,mv 目錄下的 test.txt 文件較新,如果我們執(zhí)行反向操作,并且?guī)?u參數(shù),來測試舊文件是否會覆蓋掉新文件:
[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
結(jié)果表明并沒有覆蓋掉新文件,接下來,我們測試僅當(dāng)源文件(目錄)較新時才覆蓋這個功能。
[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
從上圖結(jié)果中可以看出覆蓋成功,這種操作可以用在大量文件移動時,也可以用在更新文件或目錄時。
覆蓋文件前創(chuàng)建備份
[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
在備份的過程中,我們還可以通過參數(shù)--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
以上就是民工哥今天給大家分享的關(guān)于 mv 命令的各種用法以及實(shí)例操作,歡迎大家分享你所知道的更多關(guān)于 mv 命令的用法,請?jiān)谠u論區(qū)留言。
審核編輯:湯梓紅
-
測試
+關(guān)注
關(guān)注
8文章
5377瀏覽量
127063 -
Linux
+關(guān)注
關(guān)注
87文章
11345瀏覽量
210397 -
文件
+關(guān)注
關(guān)注
1文章
570瀏覽量
24822 -
命令
+關(guān)注
關(guān)注
5文章
696瀏覽量
22110
原文標(biāo)題:看了這篇文章!我才知道 Linux mv 命令的真正使用方法
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論