我一直在嘗試使用util-linux版本的重命名(2011)來替換所有文件中的特定字符串與另一個。雖然我意識到perl版本的重命名將提供解決方案,但我無法弄清楚如何使用此版本的重命名。使用util-linux重命名命令
具體的例子是一組文件(東西 - 2013.mkv,somethingelse - 2011.mkv),我試圖刪除雙破折號並用空格替換。
我一直在嘗試使用util-linux版本的重命名(2011)來替換所有文件中的特定字符串與另一個。雖然我意識到perl版本的重命名將提供解決方案,但我無法弄清楚如何使用此版本的重命名。使用util-linux重命名命令
具體的例子是一組文件(東西 - 2013.mkv,somethingelse - 2011.mkv),我試圖刪除雙破折號並用空格替換。
的問題是,rename
使用getopt
的參數解析,因而具有雙破折號(--
)的特殊解釋。 --
表示參數的結束。
解決方案是避免在您的命令中使用--
。一種方法是將您的命令分解爲子目標,例如翻譯單破折號強調,然後兩個下劃線單破折號:
$ rename - _ *.mkv
$ rename __ - *.mkv
一個不太迂迴的方式做,這是實際使用getopt
行爲
$ rename -- -- - *.mkv
mkdir TEMP
numbers=2011
find . -name "*.mkv" | while read filename
do
echo mv "$filename" "TEMP/somethingelse_"$((numbers++)).mkv
rm filename
done
這個腳本不使用util-linux版本的重命名。 – user3179658
你嘗試這樣'重命名的/ -/\ \ /'* .mp4' – neeru
重命名'///'是perl版本的語法,而不是util-linux版本。如果我使用的是perl版本,那麼你的命令可以在.mp4文件上運行:) – user3179658
'--'表示使用'getopt'(例如'rename')的程序的「選項結束」。解決方案最有可能找到解決辦法。也許你可以先把'-'換成別的東西(例如'_'),然後替換它? – jackrabbit