我使用的是 OSX 10.9.2 (BASH 3.5),我想重新命名整個資料夾內容名稱。所以我運行了一個腳本並以某種方式結束:
s01eDavid.Letterman.2014.02.27.Stupid.Human.Tricks.x264-SWOLLED.mp4
s01eDavid.Letterman.2014.03.07.Lenny.Marcus.HDTV.x264-BATV.mp4
s01eDavid.Letterman.2014.03.24.Jimmy.Carter.HDTV.x264-SWOLLED.mp4
s01eDavid.Letterman.2014.03.25.Emma.Watson.720p.HDTV.x264-SWOLLED.mkv
(每個句子的開頭有多餘的 S01e,而應該有 S01e01 、 S01e02......)
如何刪除/重命名這些文件以使其看起來像這樣?
s01e1 David.Letterman.2014.02.27.Stupid.Human.Tricks.x264-SWOLLED.mp4
s01e2 David.Letterman.2014.03.07.Lenny.Marcus.HDTV.x264-BATV.mp4
s01e3 David.Letterman.2014.03.24.Jimmy.Carter.HDTV.x264-SWOLLED.mp4
s01e4 David.Letterman.2014.03.25.Emma.Watson.720p.HDTV.x264-SWOLLED.mkv
謝謝!
答案1
不是awk
解決方案:
cnt=1
for f in *; do
fcnt=$(printf "%02d" $cnt)
echo mv "$f" "$(echo $f | sed -e "s/^s01e/&$fcnt /")"
cnt=$(($cnt+1));
done
我使用 printf 指令將劇集編號設定為 2 位數。
這只是將命令列印到標準輸出,因此您可以檢查您是否喜歡輸出。當您想要真正重新命名時,請從第 4 行刪除前導「echo」。
答案2
episode=1
for x in s01e*; do
mv "$x" "s01e$episode ${x#s01e}"
episode=$((episode+1))
done
如果有 10 個或更多集,您可能更喜歡在 9 以內的數字前導 0。
episode=101
for x in s01e*; do
mv "$x" "s01e${episode#1} ${x#s01e}"
episode=$((episode+1))
done