我一直在尝试使用util-linux版本的rename(2011)来replace所有文件中的特定string。 虽然我意识到perl版本的重命名将提供一个解决scheme,我不知道如何使用这个版本的重命名。
具体的例子是一组文件(东西 – 2013.mkv,somethingelse – 2011.mkv),我试图删除双破折号,并用空格replace。
问题是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