當前位置:
首頁 > 知識 > 在 Linux 上複製和重命名文件

在 Linux 上複製和重命名文件

在 Linux 上複製和重命名文件


編譯自: https://www.networkworld.com/article/3276349/linux/copying-and-renaming-files-on-linux.html

作者: Sandra Henry-stocker

譯者: geekpi

cp 和 mv 之外,在 Linux 上有更多的複製和重命名文件的命令。試試這些命令或許會驚艷到你,並能節省一些時間。

Linux 用戶數十年來一直在使用簡單的 cp 和 mv 命令來複制和重命名文件。這些命令是我們大多數人首先學到的,每天可能有數百萬人在使用它們。但是還有其他技術、方便的方法和另外的命令,這些提供了一些獨特的選項。

首先,我們來思考為什麼你想要複製一個文件。你可能需要在另一個位置使用同一個文件,或者因為你要編輯該文件而需要一個副本,並且希望確保備有便利的備份以防萬一需要恢復原始文件。這樣做的顯而易見的方式是使用像 cp myfile myfile-orig 這樣的命令。

但是,如果你想複製大量的文件,那麼這個策略可能就會變得很老。更好的選擇是:

  • 在開始編輯之前,使用 tar 創建所有要備份的文件的存檔。
  • 使用 for 循環來使備份副本更容易。

使用 tar 的方式很簡單。對於當前目錄中的所有文件,你可以使用如下命令:


$ tar cf myfiles.tar *

對於一組可以用模式標識的文件,可以使用如下命令:


$ tar cf myfiles.tar *.txt

在每種情況下,最終都會生成一個 myfiles.tar 文件,其中包含目錄中的所有文件或擴展名為 .txt 的所有文件。

一個簡單的循環將允許你使用修改後的名稱來製作備份副本:


$ for file in *

> do

> cp $file $file-orig

> done

當你備份單個文件並且該文件恰好有一個長名稱時,可以依靠使用 tab 來補全文件名(在輸入足夠的字母以便唯一標識該文件後點擊 Tab 鍵)並使用像這樣的語法將 -orig 附加到副本的名字後。


$ cp file-with-a-very-long-name{,-orig}

然後你有一個 file-with-a-very-long-name 和一個 file-with-a-very-long-name-orig。


在 Linux 上重命名文件

重命名文件的傳統方法是使用 mv 命令。該命令將文件移動到不同的目錄,或原地更改其名稱,或者同時執行這兩個操作。


$ mv myfile /tmp

$ mv myfile notmyfile

$ mv myfile /tmp/notmyfile

但我們也有 rename 命令來做重命名。使用 rename 命令的竅門是習慣它的語法,但是如果你了解一些 Perl,你可能發現它並不棘手。

有個非常有用的例子。假設你想重新命名一個目錄中的文件,將所有的大寫字母替換為小寫字母。一般來說,你在 Unix 或 Linux 系統上找不到大量大寫字母的文件,但你可以有。這裡有一個簡單的方法來重命名它們,而不必為它們中的每一個使用 mv 命令。 /A-Z/a-z/ 告訴 rename 命令將範圍 A-Z 中的任何字母更改為 a-z 中的相應字母。


$ ls

Agenda Group.JPG MyFile

$ rename "y/A-Z/a-z/" *

$ ls

agenda group.jpg myfile

你也可以使用 rename 來刪除文件擴展名。也許你厭倦了看到帶有 .txt 擴展名的文本文件。簡單刪除這些擴展名 —— 用一個命令。


$ ls

agenda.txt notes.txt weekly.txt

$ rename "s/.txt//" *

$ ls

agenda notes weekly

現在讓我們想像一下,你改變了心意,並希望把這些擴展名改回來。沒問題。只需修改命令。竅門是理解第一個斜杠前的 s 意味著「替代」。前兩個斜線之間的內容是我們想要改變的東西,第二個斜線和第三個斜線之間是改變後的東西。所以,$ 表示文件名的結尾,我們將它改為 .txt。


$ ls

agenda notes weekly

$ rename "s/$/.txt/" *

$ ls

agenda.txt notes.txt weekly.txt

你也可以更改文件名的其他部分。牢記 s/舊內容/新內容/ 規則。

$ ls

draft-minutes-2018-03 draft-minutes-2018-04 draft-minutes-2018-05

$ rename "s/draft/approved/" *minutes*

$ ls

approved-minutes-2018-03 approved-minutes-2018-04 approved-minutes-2018-05

在上面的例子中注意到,當我們在 s/old/new/ 中使用 s 時,我們用另一個名稱替換名稱的一部分。當我們使用 y 時,我們就是直譯(將字元從一個範圍替換為另一個範圍)。


總結

現在有很多複製和重命名文件的方法。我希望其中的一些會讓你在使用命令行時更愉快。



via: https://www.networkworld.com/article/3276349/linux/copying-and-renaming-files-on-linux.html

作者: Sandra Henry-Stocker 選題: lujun9972 譯者: geekpi 校對: wxy

本文由 LCTT 原創編譯, Linux中國 榮譽推出


點擊「了解更多」可訪問文內鏈接

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux技術 的精彩文章:

為什麼 Linux 比 Windows 和 macOS 更安全?

TAG:Linux技術 |