使用util-linux rename命令

时间:2014-02-16 06:43:21

标签: linux command-line rename

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

具体示例是一组文件(某些内容 - 2013.mkv,somethingelse - 2011.mkv),我正在尝试删除双破折号并替换为空格。

3 个答案:

答案 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 命令。