天天看點

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

<a target="_blank"></a>

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

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

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

$ mv file_1.txt /home/pungki/office

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

mv command

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

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

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

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

move multiple files

如果你的檔案有規律可循的話那麼你就可以使用通配符。比如,為了移除所有以.txt為擴充名的檔案,我們可以用下面的指令:

$ mv *.txt /home/pungki/office

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

move using pattern

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

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

moving directory

我們也用 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

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

renaming file

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

$ mv directory_1/ directory_2/

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

renaming directory

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

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

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

mv with verbose mode

該方法同樣适用于目錄。

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

mv directory with verbose mode

當你将檔案移動到其它位置,而那個位置恰好有同樣的檔案,這時 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

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

mv with interactive mode

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

-i 選項會提示我們關于覆寫檔案的提示,而 -u 則隻在源檔案比目标檔案新時才執行更新。讓我們看一看下面的例子:

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

update only newer

假如 file_1.txt 和 file_2.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 目錄下。但是目标位址已經有file_1.txt和file_2.txt了。

我們用下面的指令将file_1.txt 和file_2.txt從目前目錄移動到/home/pungki/office

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

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

如果-i選項詢問我們是否要覆寫檔案,那麼 -n 選項将不會允許我們覆寫任何已存在的檔案。

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

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

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

no overwrite

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

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

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

backup option

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

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

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

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

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

原文釋出時間為:2014-03-14

本文來自雲栖社群合作夥伴“linux中國”

繼續閱讀