終端基礎:在 Linux 中重命名文件和目錄
如何在 Linux 終端中重命名文件和目錄?你可以使用 mv
命令。
是的,與用於將文件和文件夾從一個位置「移動」到另一個位置的 mv
命令相同。
你可以在「移動文件和目錄」時簡單地指定文件和目錄的新名稱。
要重命名文件,請使用:
mv old_file new_file
同樣,要重命名目錄,請使用:
mv old_dir new_dir
聽起來很容易,對吧? 但我將在這裡詳細討論文件重命名:
- 向你展示重命名的實際示例
- 顯示通過結合
find
和exec
命令批量重命名多個文件的示例 - 討論用於批量重命名文件的專用程序
我們來一一看看。
使用 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
命令的結果執行命令。
使用 find
、exec
和 mv
命令沒有固定標準的結構。你可以根據需要組合它們。
假設你想通過在名稱中添加 _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 命令完全陌生,本系列將對你有很大幫助。
如果你有疑問或建議,請告訴我。
via: https://itsfoss.com/linux-rename-files-directories/
作者:Abhishek Prakash 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive