Filenames
在沒有任何內容的文件中重命名非字母和數字字元
我在一個文件夾中有大量 .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
使用 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:]-]/}