需求
* 01 GFRIEND - Intro (Belief).mp3
* 02 GFRIEND - Love Whisper.mp3
* ...
* 10 GFRIEND - Summer Rain (Instrumental).mp3
⬇
* GFRIEND - Intro (Belief).mp3
* GFRIEND - Love Whisper.mp3
* ...
* GFRIEND - Summer Rain (Instrumental).mp3
實作
for f in *.mp3; do mv "$f" "$(echo "$f" | sed 's/^[0-9][0-9] //')"; done
for f in *.mp3
:對目前資料夾下所有.mp3
檔案進行迴圈(f
就是每個檔名)。do ... done
:這是 bash 的迴圈語法,do
裡面會對每個檔案執行一次命令。mv 舊檔名 新檔名
:把「舊檔名」改成「新檔名」。echo "$f"
:把$f
印出來,例如某次$f
是"01 GFRIEND – Love Whisper.mp3"
。|
是管線,代表把echo "$f"
的輸出交給sed
處理。sed
是文字處理工具。's/^[0-9][0-9] //'
的意思是把01
、02
替代為「空白」:舊字串//新字串
:把「舊字串」取代為「新字串」。s/
:substitue,替代。^
:字串開頭。[0-9][0-9]
:任意兩個數字 + 一個空白
最後會跑的程式是像這樣:
mv 01 GFRIEND - Intro (Belief).mp3 GFRIEND - Intro (Belief).mp3
mv 02 GFRIEND - Love Whisper.mp3 GFRIEND - Love Whisper.mp3
mv 03 GFRIEND - Summer Rain.mp3 GFRIEND - Summer Rain.mp3
mv 04 GFRIEND - Rainbow.mp3 GFRIEND - Rainbow.mp3
mv 05 GFRIEND - Ave Maria.mp3 GFRIEND - Ave Maria.mp3
mv 06 GFRIEND - One-Half.mp3 GFRIEND - One-Half.mp3
mv 07 GFRIEND - Life Is a Party.mp3 GFRIEND - Life Is a Party.mp3
mv 08 GFRIEND - Red Umbrella.mp3 GFRIEND - Red Umbrella.mp3
mv 09 GFRIEND - Falling Asleep Again.mp3 GFRIEND - Falling Asleep Again.mp3
mv 10 GFRIEND - Summer Rain (Instrumental).mp3 GFRIEND - Summer Rain (Instrumental).mp3