Bash
批量重命名文件為順序編號
我正在嘗試批量重命名我的 shell 中的一堆文件,即使網際網路上有很多關於它的材料,我似乎無法為我的具體情況找到解決方案。
我有一堆文件(似乎是)“時間戳ID”:
abc_128390.png abc_138493.png abc_159084.png ...
我想換一個櫃檯:
abc_001.png abc_002.png abc_003.png ...
我(很多)天真的方法是這樣的:
mv abc_*.png abc_{001..123}.png
另外,我想不出一種方法讓它與
for
-loop一起工作。FWIW,不幸
rename
的是在這個特定的系統上不可用。任何建議將不勝感激!
我想不出一種以更聰明的方式處理遞增計數器的解決方案,但這應該可行:
i=0 for fi in abc_??????.png; do mv "$fi" abc_$i.png i=$((i+1)) done
它應該是安全的,
abc_*.png
因為它在第mv
一個執行之前就被擴展了,但是非常具體,因為你只需要最後有六個字元的時間戳的文件是很有用的。
將
rename
實用程序作為 Perl 包的一部分,您可以:rename -n 'our $i; s/_.*/sprintf("_%03d.png", $i++)/e' *.png
注意:
-n
用於試執行,將其刪除以重命名應用於文件。