Linux 移動或重新命名檔案/目錄-mv 的10個實用例子

Bacer發表於2021-09-09

熟悉了 ,下一個相關的命令就是 mv 命令。當你想要將檔案從一個位置移動到另一個地方並且不想複製它,那麼mv 命令是完成這個任務的首選。

初識 mv 命令

圖片描述

mv 命令是一個與cp類似的命令,但是它並非建立檔案或目錄的複製品/副本。不管你在使用什麼版本的Linux系統,mv 都預設安裝在你的Linux系統上了。來看一下 mv 命令在日常操作中的一些例子。

1.移動檔案

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

$ mv file_1.txt /home/pungki/office

圖片描述

mv command

如我們所見,當我們移動 file_1.txt 檔案時,先前目錄的 file_1.txt 就被刪除了。

2.移動多個檔案

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

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

圖片描述

Move multiple files

如果你的檔案有規律可循的話那麼你就可以使用萬用字元。比如,為了移除所有以.txt為副檔名的檔案,我們可以用下面的命令:

$ mv *.txt /home/pungki/office

圖片描述

Move using pattern

3.移動目錄

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

圖片描述

Moving directory

4.重新命名檔案或目錄

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

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

$ mv file_1.txt file_2.txt

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

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

圖片描述

Renaming file

5. 重新命名目錄

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

$ mv directory_1/ directory_2/

圖片描述

Renaming directory

6. 列印移動資訊

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

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

圖片描述

mv with verbose mode

該方法同樣適用於目錄。

圖片描述

mv directory with verbose mode

7. 使用互動模式

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

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

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

圖片描述

mv with interactive mode

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

8. 使用更新選項

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

圖片描述

Update only newer

假如 file_1.txt 和 file_2.txt有如下特點:

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

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

我們用下面的命令將file_1.txt 和file_2.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

圖片描述

No overwrite

10. 複製時建立備份

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

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

圖片描述

Backup option

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

11. 無條件覆蓋已經存在的檔案

(譯註:這一節是譯者補充的,原文遺漏了這個重要選項)

當你希望無論如何都覆蓋已經存在的檔案或目錄時,你可以使用 -f 選項。如果同時指定了 -f 選項和 -i 或 -n 選項,則 -f 選項會覆蓋它們——即不進行任何提示而覆蓋,所以,在使用此引數時,知道你在做什麼。

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

總結

移動檔案和目錄命令是Linux系統的基本命令。通常你可以透過man mv 或者 mv --help顯示mv的手冊頁以瞭解更多詳細資訊。

編譯自:
原創: 譯者: Chenguang

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2768/viewspace-2814631/,如需轉載,請註明出處,否則將追究法律責任。

相關文章