2014-11-06 46 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