Bash

批量重命名文件為順序編號

  • January 5, 2021

我正在嘗試批量重命名我的 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用於試執行,將其刪除以重命名應用於文件。

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