从目录中所有文件的名称中减去一个数字

时间:2014-11-06 01:02:19

标签: bash

在目录中,我有以下文件

0069.png  0074.png  0079.jpg  0084.png   

以及更多类似的命名文件。

如何通过在bash中从名称中减去一个数字来更改名称?

例如,在减去17之后,上面的文件将是

0052.png  0057.png  0062.jpg  0067.png   

感谢。

1 个答案:

答案 0 :(得分:1)

您可以在要重命名的jpg和png文件所在的目录中使用以下rename命令。

$ rename 's/^0*\K(\d+)/$1-17/e' *.* -vn
0069.png renamed as 0052.png

来自man rename

-v, --verbose
           Verbose: print names of files successfully renamed.

-n, --no-act
           No Action: show what files would have been renamed.

从上面的命令中删除-vn以进行重命名。 e修饰符允许在替换部分中计算表达式。

添加-f选项以强制重命名。

rename 's/^0*\K(\d+)/$1-17/e' *.* -f

示例:

$ ls
1.jpg  2.png
$ rename 's/^0*\K(\d+)/$1+1/e' *.* -fvn
1.jpg renamed as 2.jpg
2.png renamed as 3.png