
我的資料夾中有大量 .jpg 文件,其中包含非字母字元等! , ( ) ^ & .
。
我需要重命名這些文件,以便任何不存在的內容都A-Z a-z 0-9
被替換為任何內容。此外,空格應替換為-
也以 .mp4$$$.jpg 結尾的文件,這部分需要保持不變。
例如,如果該檔案被稱為
ask me anything.mp4001.jpg
ask, me. anything! 2.mp4001.jpg
檔案名稱應更改為
ask-me-anything.mp4001.jpg
ask-me-anything-2.mp4001.jpg
答案1
使用 bash,你可以這樣做:
for f in *.jpg
do
if [[ $f =~ ^(.*)(\.mp[[:digit:]]+\.jpg) ]]
then
prefix=${BASH_REMATCH[1]}
suffix=${BASH_REMATCH[2]}
prefix=${prefix//[^[:alnum:] ]/}
prefix=${prefix// /-}
echo mv -- "$f" "${prefix}${suffix}"
fi
done
這會循環遍歷*.jpg
文件,並嘗試將每個文件名與以下模式進行匹配: (anything) 後跟.mp
(一個或多個數字) .jpg
。如果檔案名稱匹配,我們將其拆開進行重命名。後綴包含句點,因此我們將其單獨保存,以便去除前綴中的任何句點。刪除所有非字母數字或空格的內容後,我們用破折號取代所有空格。然後為命令重建檔案名稱mv
;echo
如果結果看起來正確,請刪除。
如果您希望在原始檔案名稱中保留破折號,請將最後兩個分配替換prefix
為以下內容:
prefix=${prefix// /-}
prefix=${prefix//[^[:alnum:]-]/}