Rename

重命名數百個文件

  • March 24, 2016

我正在使用 Elementary OS(對於任何 UNIX 系統來說仍然很新),並且在我的舊硬碟驅動器上有數百個需要排序的文本文件。所有文本文件都有一個名稱,例如;

lua - eng1-6TH4eI8gtf3.txt

我需要一個可以從所有字元中刪除最後 11 個字元但仍保留副檔名的命令。環顧四周,我看到了“重命名”命令,但我不確定這是否對我有用。

我可以複製、粘貼然後更改目錄之類的任何內容的命令將是驚人的,並且解釋了所有內容的作用。

這個命令應該很適合你,因為我在一些與你的模式相同的範例文件上測試了它:

rename 's/(.*)(-.{11})\.txt$/$1\.txt/' *

解釋:

看這個簡單的命令:

rename 's/pattern/result/' filename(s)

模式可以是正則表達式。因此,我們可以獲取文本的不同部分(即文件名)。如果你不明白它,Google正則表達式。它看起來很複雜,但如果你學會它,它很容易。

結果,我取第一個括號的內容$1並留下第二個括號,最後添加.txt

Importnat 注意

首先執行帶有-n -v選項的命令以查看該命令將執行的操作。如果結果是您想要的,請在沒有選項的情況下執行它。所以首先像這樣執行它:

$ rename -n -v 's/(.*)(-.{11})\.txt$/$1\.txt/' *
rename(lua - eng1-6TH4eI8gtf3.txt, lua - eng1.txt)
rename(lua - eng2-6TH4eI8gtf4.txt, lua - eng2.txt)
rename(lua - eng4-6TH4eI8gtf5.txt, lua - eng4.txt)

引用自:https://unix.stackexchange.com/questions/271887