Linux下mv命令詳解


mv命令格式:mv [選項] 源文件或目錄 目標文件或目錄

mv命令參數(選項):

-b :若需覆蓋文件,則覆蓋前先行備份。 

-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;

-i :若目標文件已經存在時,就會詢問是否覆蓋!

-u :若目標文件已經存在,且源文件比較新,才會更新

-t :指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在后。

 

命令實例:

1、文件改名  

命令:mv test.log test1.txt     說明:將文件test.log重命名為test1.txt

命令:mv -i test.log test1.txt    說明:將文件test.log重命名為test1.txt 若同名詢問是否覆蓋

命令:mv -f test.log test1.txt    說明:將文件test.log重命名為test1.txt 同名則強制覆蓋

命令:mv test.log -b test1.txt  說明:將文件test.log重命名為test1.txt 同名則備份

 

2、移動文件  

命令:mv test1.txt dir1            說明:將test1.txt文件移到目錄dir1中

命令:mv test1.txt test2.txt dir1 

命令:mv -t /home/dir1/ test1.txt test2.txt   說明:以上兩命令均將文件test1.txt,test2.txt移到目錄dir1。

 

3、移動目錄

命令: mv dir1 dir2       說明: 如果目錄dir2不存在,將目錄dir1改名為dir2;否則,將dir1移動到dir2中。

命令: mv * ../        說明:移動當前文件夾下的所有文件到上一級目錄

命令: mv dir1/* dir2      說明:把當前目錄的子目錄dir1里的所有文件移動到另一個子目錄dir2里


以下內容轉發自: https://www.jianshu.com/p/3172011c1aeb

1.移動文件

移動文件時需要注意的是文件的源地址和目標地址必須不同。這里有個例子,想要將file_1.txt文件從當前目錄移動到其它目錄,以/home/pungki/為例,語法應該如下:

$ mv file_1.txt /home/pungki/office

如我們所見,當我們移動 filetxt 文件時,先前目錄的 file1.txt 就被刪除了。

2.移動多個文件

如果想一次移動多個文件,我們可以將他們放在一行並用空格分開。

$ mv file_2.txt file_3.txt file_4.txt /home/pungki/office

如果你的文件有規律可循的話那么你就可以使用通配符。比如,為了移除所有以.txt為擴展名的文件,我們可以用下面的命令:

$ mv *.txt /home/pungki/office

3.移動目錄

不同於復制命令,用 mv 命令移動目錄相當直接。移動目錄你可以使用不帶選項的 mv 命令。看下面的截圖就一目了然了。

4.重命名文件或目錄

我們也用 mv 命令來重命名文件或目錄。不過目標位置和源位置必須相同才可以。然后文件名必須不同。

假定我們當前所在目錄為/home/pungki/Documents,而我們想將file1.txt重命名為file2.txt。那么命令應該如下:

$ mv file_1.txt file_2.txt

如果是絕對路徑,它應該像下面這樣:

$ mv /home/pungki/Documents/file_1.txt /home/pungki/Documents/file_2.txt

5. 重命名目錄

上一段的規則同樣適用於目錄。請看這個例子:

$ mv directory_1/ directory_2/

6. 打印移動信息

當你移動或重命名一大堆文件或目錄時,你可能會想在不去目標位置去查看的情況下知道你自己的命令是否成功地執行了。這就要用到-v選項了。

$ mv -v *.txt /home/pungki/office

該方法同樣適用於目錄。

7. 使用交互模式

當你將文件移動到其它位置,而那個位置恰好有同樣的文件,這時 mv 命令會覆蓋掉原來的文件。對於mv的這一行為一般不會有什么提示。如果想產生一個關於覆蓋文件的提示,我們可以使用-i選項。(譯注:通常發行版會通過alias命令,將-i作為默認選項,所以會有提示。)

假設我們想將 file1.txt 移動到 /home/pungki/office。同時,/home/pungki/office 目錄下已經有file1.txt文件了。

$ mv -i file_1.txt /home/pungki/office

這個提示會讓我們知道目標位置處file_1.txt的存在。如果我們按y鍵,那么那個文件將會被刪除,否則不會。

8. 使用更新選項

-i 選項會提示我們關於覆蓋文件的提示,而 -u 則只在源文件比目標文件新時才執行更新。讓我們看一看下面的例子:

假如 file1.txt 和 file2.txt有如下特點:

File_1.txt has 84 bytes file size and it last modified time is 12:00

File_2.txt has 0 bytes file size and it last modified time is 11:59

我們想將它們移動到 /home/pungki/office 目錄下。**但是目標地址*已經有file1.txt和file2.txt了。

我們用下面的命令將file1.txt 和file2.txt從當前目錄移動到/home/pungki/office

$ mv -uv *.txt /home/pungki/office

可以看到這些文件被移動了。能移動這些文件是因為它們最近的修改時間戳比 /home/pungki/office 目錄中的文件新。

9.不要覆蓋任何已存在的文件

如果-i選項詢問我們是否要覆蓋文件,那么 -n 選項將不會允許我們覆蓋任何已存在的文件。

繼續使用第8點中的例子,如果我們將-u 換成 -n同時加上-v選項,那么我們會看到沒有任何文件移動到了 /home/pungki/office 目錄下。

$ mv -vn *.txt /home/pungki/office

10. 復制時創建備份

默認情況下,移動文件將會覆蓋已存在的目標文件。但是如果我們移動錯了文件而目標文件已經被新的文件覆蓋了,這時應該怎么辦才好呢?有沒有一種方法可以恢復之前的文件呢?答案是肯定的。我們可以用-b選項。該選項會在新文件覆蓋舊文件時將舊文件做備份。這里我們還以第8點為例。

$ mv -bv *.txt /home/pungki/office

如截圖中所見,在 /home/pungki/office 目錄下出現了名為file1.txt~ and file2.txt~ 的文件。那個波浪符號(~)意味着這些文件是備份文件。從它們的屬性中我們可以看到,這些文件比file1.txt和file2.txt要舊。



作者:流川楓丶
鏈接:https://www.jianshu.com/p/3172011c1aeb
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM