我有在點丟失文件名的目錄,這標誌着該文件擴展名的開頭找到第n個位置:正則表達式從EOL
filename1jpg
filename2JPG
filename3MPG
我現在想的第三位前添加.
從行的末尾,這樣的文件名會被重命名爲:
filename1.jpg
filename2.JPG
filename3.MPG
最方便的可能是與rename
的外殼,但我無法想象,一個正則表達式。有人能幫我嗎?
我有在點丟失文件名的目錄,這標誌着該文件擴展名的開頭找到第n個位置:正則表達式從EOL
filename1jpg
filename2JPG
filename3MPG
我現在想的第三位前添加.
從行的末尾,這樣的文件名會被重命名爲:
filename1.jpg
filename2.JPG
filename3.MPG
最方便的可能是與rename
的外殼,但我無法想象,一個正則表達式。有人能幫我嗎?
使用perl單線程。
perl -e 'rename $_, s/\.?(...)$/.$1/r for <*>'
或者使用shell重命名:
rename 's/\.?(...)$/.$1/' *
您可以在文件所在的目錄下嘗試下面的rename命令。
rename 's/(...)$/.$1/' *
$
意味着行錨的結束。並且()
稱爲用於捕獲字符的捕獲組。所以(...)$
這個捕獲組將捕獲最後三個字符並將其保存到組索引1中。然後匹配的子字符串(後三個字符)被一個點加上組索引1(後三個字符)中的字符替換。
查找(?<=[^.])(?=[^.]{3}$)
更換.
這裏的另一種方式:
awk '{print $1, $1}' | awk '{$2=gensub(/...$/,".\\0","",$2); print}' | xargs -n2 echo mv
它可以通過滴速執行。
工作,重命名不是。所以我接受你的回答,謝謝。 – royskatt 2014-10-05 21:07:59