Shell

如何清理文件副檔名?

  • September 7, 2018

我有一個包含 .MP3 文件的目錄,我想將其副檔名更改為 .mp3。最簡單的方法是什麼?我的想法是這樣的:

find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/\1.mp3/ \; 

…雖然我知道這不太對。:) 替換不正確,我不確定如何同時使用 amv和in的sed命令。-exec``find

我需要一個 bash 腳本嗎?

這是在 Bash 中執行此操作的一種方法:

for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done

我在echo這裡使用過,所以命令本身除了列印成對的文件名之外什麼都不做。如果該列表代表您要進行的更改,那麼您可以更改echo為類似mv -i --的內容,然後移動您的文件(並在覆蓋之前提示您)。

簡要說明:

for遍歷每個匹配的文件*。然後,我們確定副檔名是否已經是小寫,如果是,我們繼續,如果不是,我們繼續移動它(或回顯它,視情況而定)。這使用了 Bash 的內置字元串操作,您可以在此處閱讀:http: //tldp.org/LDP/abs/html/string-manipulation.html

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