眾所周知,在 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文章
5333瀏覽量
126779 -
Linux
+關注
關注
87文章
11320瀏覽量
209849 -
文件
+關注
關注
1文章
569瀏覽量
24769 -
命令
+關注
關注
5文章
688瀏覽量
22056
原文標題:看了這篇文章!我才知道 Linux mv 命令的真正使用方法
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論