Bash
如何使用轉換將大量 jpg 文件重命名為 png
假設我有一堆
.jpg
文件要轉換為.png
. 文件結構如下:00-01.jpg 00-02.jpg 00-03.jpg 00-04.jpg 00-05a.jpg 00-05b.jpg 01-01.jpg 01-02.jpg 01-03a.jpg 01-03b.jpg 01-04a.jpg 01-04b.jpg
所以現在我想重命名
00-01.jpg
為ACDfff001.png
then00-02.jpg
toACDfff002.png
等等。但是,當我到達時00-05a.jpg
,00-05b.jpg
我想ACDfff005a.png
分別將它們命名為ACDfff005b.png
。最終結果例如應該是:
00-01.jpg -> ACDfff001.png 00-02.jpg -> ACDfff002.png 00-03.jpg -> ACDfff003.png 00-04.jpg -> ACDfff004.png 00-05a.jpg -> ACDfff005a.png 00-05b.jpg -> ACDfff005b.png 01-01.jpg -> ACDfff006.png 01-02.jpg -> ACDfff007.png 01-03a.jpg -> ACDfff008a.png 01-03b.jpg -> ACDfff008b.png 01-04a.jpg -> ACDfff009a.png 01-04b.jpg -> ACDfff009b.png
這可能在bash或python中嗎?
這是一個起點;它假設索引只上升到 9;如果那不是真的,你將不得不擴展它。
#!/bin/bash index=0 lastseq= for file in *.jpg do base=$(basename "$file" .jpg) lastchar=${base: -1:1} if [[ $lastchar =~ [[:digit:]] ]] then index=$((index + 1)) newname=$(printf "ACDfff%03d" $index) lastseq=$lastchar else seclast=${base: -2:1} if [[ $seclast != $lastseq ]] then index=$((index + 1)) lastseq=$seclast fi newname=$(printf "ACDfff%03d%s" $index $lastchar) fi echo mv "$file" "${newname}.png" done