Shell-Script

批量重命名文件的升序號

  • October 4, 2015

我有一批文件:

$ ls
Li1Fe1O2_11 Li1Fe2O3_8  Li1Fe3O4_2  Li1Fe3O4_5  Li2Fe1O3_16 Li2Fe2O4_12 Li3Fe1O4_19 Li3Fe1O4_22
Li1Fe1O2_14 Li1Fe2O3_9  Li1Fe3O4_3  Li1Fe3O4_6  Li2Fe1O3_17 Li2Fe2O4_13 Li3Fe1O4_20
Li1Fe2O3_7  Li1Fe3O4_1  Li1Fe3O4_4  Li2Fe1O3_15 Li2Fe2O4_10 Li3Fe1O4_18 Li3Fe1O4_21

我想將它們重命名為:

enum-00132
enum-00133
enum-00134
...

我試圖研究重命名但沒有成功。

用這個:

c=132
for f in *; do
 mv -v "$f" "enum-$(printf '%0*d' 5 $c)"
 c=$(($c+1))
done

c=<your_starting_number>; _ 我假設132在你的問題中。然後for循環通過目前目錄中的所有文件執行。對於每個文件,mv都會呼叫該命令。該printf實用程序列印帶有前導零的新文件名。最後計數器變數$c遞增+1。

**編輯:**如果你只想要目錄使用這個(*/只有 machtes 目錄,其餘的保持不變):

c=132
for d in */ ; do
 mv -v "$d" "enum-$(printf '%0*d' 5 $c)"
 c=$(($c+1))
done

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