Rename
如何使用格式錯誤的編號批量重命名文件?
我有一堆編號格式錯誤的文件:
prefix-#.ext | for files with number 1-9 prefix-##.ext | for files with number 10-99 prefix-###.ext | for files with number 100-999
由於進一步處理,我需要他們所有的名字都是格式:
prefix-###.ext
. 有什麼簡單的方法可以做到這一點嗎?
在 Debian、Ubuntu 和衍生產品上,您可以使用
rename
Perl 腳本:rename 's/(?<=-)([0-9]+)/sprintf "%03d", $1/e' prefix-*.ext
某些系統可能將此命令安裝為
prename
或perl-rename
。請注意,這不是rename
util-linux 套件中的實用程序,它沒有提供簡單的方法來執行此操作。在 zsh 中,您可以使用
zmv
重命名和l
參數擴展標誌來填充零。autoload -U zmv zmv '(prefix-)(*)(.ext)' '$1${(l:3::0:)2}$3'
您也可以使用普通的 shell 循環來執行此操作。Shell 沒有很好的字元串操作結構;用零填充的一種方法是添加 1000 並去掉前導
1
。for x in prefix-*.ext; do n=${x%.ext}; n=${x##*-}; n=$((n+1000)) mv "$x" "${x%-*.ext}${n#1}${x##*-}" done
另一種方法是呼叫該
printf
實用程序。for x in prefix-*.ext; do n=${x%.ext}; n=${x##*-} mv "$x" "${x%-*.ext}$(printf %03d "$n")${x##*-}" done