請任何人。Linux - 通過用'##'替換最後的連字符來重命名所有文件
我如何在Linux中重命名像一堆文件:
abc-def-0001.xxx acb-def-0002.xxx
到:
abc-def##0001.xxx ...
我試圖從SO喜歡幾點建議:
rename 's/(.*)-/$1##/' *.xxx
但沒在我的環境中沒有按預期工作。
請任何人。Linux - 通過用'##'替換最後的連字符來重命名所有文件
我如何在Linux中重命名像一堆文件:
abc-def-0001.xxx acb-def-0002.xxx
到:
abc-def##0001.xxx ...
我試圖從SO喜歡幾點建議:
rename 's/(.*)-/$1##/' *.xxx
但沒在我的環境中沒有按預期工作。
所以我最終使用:
for i in *; do mv "$i" "`echo $i | sed "s/\(.*\)-/\1##/"`"; done
我覺得我的版本重命名命令不支持perl的表情......
你可以在你的正則表達式使用前瞻:
rename -n 's/-(?=\d)/##/' *.xxx
這將匹配&代替後跟一個數字第一_
。
但是你的模式's/(.*)-/$1##/'
也適用於給定的例子,但是這個假設你總是替換最後一個下劃線。
測試此命令後不要忘記取出'-n'。 – anubhava
不要忘記,創建包含'#'等字符的文件名的人將面臨永恆的詛咒...雖然允許,但某些字符(#,%,\,空格,....)是在其他情況下使用太多,你只是在招惹麻煩。 – user1934428
什麼是「它不工作」是什麼意思? –
沒有文件被重命名。 – Fuhrmann
那麼你的環境是什麼?在我的'bash'你的命令工作正常。 –