2014-11-06 49 views
0

从所有文件的名称一些在目录中,我有以下文件减去一个目录

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

多的类似命名的文件。

如何通过从bash中减去一个数字来改变他们的名字?

例如,减去17之后,文件上面会

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

感谢。

回答

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 
+0

你在运行'rename'上。在'util-linux 2.23.2'重命名中没有'-n'选项? – 2014-11-06 01:18:55

+0

@ DavidC.Rankin n表示不行为。它只是显示输出的结果。 – 2014-11-06 01:21:31

+0

来自util-linux的'rename'只支持LInux上的'-v verbose','-s symlink'(帮助和版本也可用)。你在Linux上吗? – 2014-11-06 01:24:21