我一直在尝试使用util-linux版本的rename(2011)来替换所有文件中的特定字符串。虽然我意识到重命名的perl版本会提供一个解决方案,但我无法弄清楚如何使用这个版本的重命名。
具体示例是一组文件(某些内容 - 2013.mkv,somethingelse - 2011.mkv),我正在尝试删除双破折号并替换为空格。
答案 0 :(得分:7)
问题是rename
使用getopt
进行参数解析,因此对双短划线(--
)有特殊的解释。 --
表示参数的结束。
解决方案是避免在命令中使用--
。一种方法是将命令分解为子目标,例如:将单个短划线转换为下划线,然后将两个下划线转换为单个短划线:
$ rename - _ *.mkv
$ rename __ - *.mkv
实现这一目标的一种不那么迂回的方法是实际使用getopt
行为
$ rename -- -- - *.mkv
答案 1 :(得分:0)
mkdir TEMP
numbers=2011
find . -name "*.mkv" | while read filename
do
echo mv "$filename" "TEMP/somethingelse_"$((numbers++)).mkv
rm filename
done
答案 2 :(得分:0)
util-linux 的重命名在 Ubuntu 中的 /usr/bin/rename.ul
中。所以你可以使用 rename.ul
命令。