我一直在尝试使用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