Linux下批次重命名文件

Linux下批次重命名文件

如何使用「重新命名」指令將圖像從「something_full.jpg」遞歸重命名為「something_500.jpg」?

答案1

基本上,您可以使用該rename工具來實現此目的。它應該有一個基於 Perl 的版本和基於 Debian 的 Linux 發行版,但你可以輕鬆地下載它也從原始程式碼開始(顯然,您需要先使用 使其可執行chmod +x)。


以下命令將取代目前目錄中所有 JPG 檔案的_full部分。_500

rename 's/_full/_500/' *.jpg

若要遞歸地執行此操作,請從目前目錄開始,使用renamewith find

find . -type f -iname "*.jpg" -exec rename 's/_full/_500/' {} \;

筆記:您可能想在實際執行之前測試該命令。為此,請將選項新增-nrename(例如,在rename's//'字串之間)。

答案2

您可能想了解一下茲馬夫。 zmv 是 zsh 的特定功能,需要autoload -U zmv位於.zshrc檔案中的某個位置。

編輯:作為一個例子,OP提出的任務可以透過以下方式解決

noglob zmv '(*)_full.(*)' '$1_500.$2'

手冊頁摘錄zshcontrib

zmv [ -finqQsvwW ] [ -C | -L | -M | -p program ] [ -o optstring ] srcpat dest

將與模式srcpat 匹配的文件移動(通常是重命名)到具有dest 給出的名稱形式的相應文件,其中srcpat 包含模式周圍的括號,這些模式將依次替換為dest 中的$1、$2、... 。例如,

zmv '(*).lis' '$1.txt'

重命名foo.lisfoo.txtmy.old.stuff.lismy.old.stuff.txt等。

該模式始終被視為 EXTENDED_GLOB 模式。任何名稱未因替換而更改的檔案將被忽略。任何錯誤(一次替換導致空字串,兩次替換給出相同的結果,目標是現有的常規文件並且未給出 -f)都會導致整個函數中止而不執行任何操作。

EXTENDED_GLOB 模式非常強大。這裡是這個概念的一個很好的入門讀物。

相關內容