需求
* 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