2014-02-16 69 views
2

我一直在尝试使用util-linux版本的重命名(2011)来替换所有文件中的特定字符串与另一个。虽然我意识到perl版本的重命名将提供解决方案,但我无法弄清楚如何使用此版本的重命名。使用util-linux重命名命令

具体的例子是一组文件(东西 - 2013.mkv,somethingelse - 2011.mkv),我试图删除双破折号并用空格替换。

+1

你尝试这样'重命名的/ -/\ \ /'* .mp4' – neeru

+2

重命名'///'是perl版本的语法,而不是util-linux版本。如果我使用的是perl版本,那么你的命令可以在.mp4文件上运行:) – user3179658

+0

'--'表示使用'getopt'(例如'rename')的程序的“选项结束”。解决方案最有可能找到解决办法。也许你可以先把'-'换成别的东西(例如'_'),然后替换它? – jackrabbit

回答

3

的问题是,rename使用getopt的参数解析,因而具有双破折号(--)的特殊解释。 --表示参数的结束。

解决方案是避免在您的命令中使用--。一种方法是将您的命令分解为子目标,例如翻译单破折号强调,然后两个下划线单破折号:

$ rename - _ *.mkv 
$ rename __ - *.mkv 

一个不太迂回的方式做,这是实际使用getopt行为

$ rename -- -- - *.mkv 
0
mkdir TEMP 
numbers=2011 
find . -name "*.mkv" | while read filename 
do 
    echo mv "$filename" "TEMP/somethingelse_"$((numbers++)).mkv 
    rm filename 
done 
+0

这个脚本不使用util-linux版本的重命名。 – user3179658