Linux中國

終端基礎:在 Linux 中重命名文件和目錄

在這篇基本命令行教程中,你將學習在 Linux 終端重命名文件和目錄的各種方法。

如何在 Linux 終端中重命名文件和目錄?你可以使用 mv 命令

是的,與用於將文件和文件夾從一個位置「移動」到另一個位置的 mv 命令相同。

你可以在「移動文件和目錄」時簡單地指定文件和目錄的新名稱。

要重命名文件,請使用:

mv old_file new_file

同樣,要重命名目錄,請使用:

mv old_dir new_dir

聽起來很容易,對吧? 但我將在這裡詳細討論文件重命名:

  • 向你展示重命名的實際示例
  • 顯示通過結合 findexec 命令批量重命名多個文件的示例
  • 討論用於批量重命名文件的專用程序

我們來一一看看。

使用 mv 命令重命名文件和目錄

使用 mv 命令重命名同一目錄中的文件:

mv file1.txt file2.txt

同樣,你可以重命名同一位置的目錄:

mv dir1 dir2

這是我重命名文件和目錄的示例:

如你所見,與 cp 命令 不同,你不必使用遞歸選項來通過 mv 命令 處理目錄。

? 如果你嘗試使用相同的名稱重命名該文件,你會看到一個錯誤(顯然)。

你還可以在將文件移動到另一個位置時重命名它:

mv old-file-name another_dir/new-file-name

在下面的示例中,我將名為 firefox-quiz.txt 的文件移動到示例目錄。在這樣做的同時,我將其重命名為 quiz.txt

我將其視為剪切粘貼操作。

? 雖然你可以將多個文件移動到另一個位置(mv file1 file2 file2 dir),但你不能使用 mv 重命名多個文件。為此,你必須採用我在以下部分中討論的其他策略。

通過組合 mv、find 和 exec 命令重命名與某個模式匹配的多個文件

? 批量重命名此類文件時要格外小心。一步錯誤的舉動就會導致無法挽回的不良結果。

find 命令用於根據文件名、類型、修改時間和其他參數在給定目錄中查找文件。exec 命令與 find 結合使用,對 find 命令的結果執行命令。

使用 findexecmv 命令沒有固定標準的結構。你可以根據需要組合它們。

假設你想通過在名稱中添加 _old 來重命名當前目錄中以 .txt 結尾的所有文件。所以 file_1.txt 變成 file_1.txt_old 等等。

find . -type f -name "*.txt" -exec mv {} {}_old ;

這只是一個示例,你的重命名要求可能會有所不同。另外,以上僅適用於不帶空格的文件名

專業提示:在處理這樣的批量操作時,你可以巧妙地使用 echo 命令來查看將執行什麼操作,而不是實際執行它。如果看起來不錯,那就採取實際行動吧。

例如,首先查看哪些文件將被重命名:

find . -type f -name "*.txt" -exec echo mv {} {}_old ;

如你所見,實際上沒有重命名任何文件。但是,如果你在沒有使用回顯(echo)命令的情況下運行上述命令,你將看到將執行什麼命令。

如果你覺得沒問題,請刪除 echo 命令並繼續進行實際的重命名。

find . -type f -name "*.txt" -exec mv {} {}_old ;

我在 《Efficient Linux 命令行》一書中學到了這個技巧。一本充滿了這樣的小寶石的優秀書。難怪它已成為 我最喜歡的 Linux 書籍之一。

使用 rename 命令輕鬆重命名多個文件

有一個名為 rename 的便捷命令行程序,可用於根據給定的 Perl 正則表達式模式批量重命名文件。

該實用程序不是 GNU 工具鏈的一部分,也不是預安裝的。因此,你必須首先使用發行版的包管理器來安裝它。

對於 Debian/Ubuntu,命令為:

sudo apt install rename

你可以通過以下方式使用它:

rename [options] perl_regex [files]

選項有:

  • -v : 詳細模式
  • -n :無操作,顯示將被重命名的文件,但不重命名它們
  • -o : 不覆蓋
  • -f : 強制覆蓋現有文件
  • -s : 不重命名軟鏈接,只重命名其目標

現在,讓我們採用你在上一節中看到的相同示例。將 *.txt 重命名為 .txt_old

rename 's/.txt$/.txt_old/' **

我不打算在這裡解釋正則表達式。** 表示查看所有子目錄中的所有文件。

正如你所看到的,它按預期工作。

總結

我希望你喜歡這個技巧,它可以幫助你學習在 Linux 命令行中執行基本任務。當然是針對那些想學習和使用命令行的人。桌面用戶始終擁有用於此類任務的 GUI 工具。

如果你對 Linux 命令完全陌生,本系列將對你有很大幫助。

終端基礎:Linux 終端入門

如果你有疑問或建議,請告訴我。

via: https://itsfoss.com/linux-rename-files-directories/

作者:Abhishek Prakash 選題:lujun9972 譯者:geekpi 校對:wxy

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


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國