Rename
如何在重命名命令中增加變數值
我想將文件重命名為遞增數字格式,如下所示:
04.jpg 05.jpg 06.jpg
因此我需要提出一種方法來增加變數值並將其傳遞給
rename
. 不知何故,網際網路告訴我這樣做:rename -n 'our $i; s/\d+/sprintf("new\/%03d", $i++)/e' *.*
關鍵是我不明白這是如何工作的。到目前為止,我只能猜測
our $i
將響應傳遞未知$i
變數的引用以重命名。然後它將sprintf("new\/%03d", $i++)
部分添加。根據這個結論,我決定試試這個:i=4 rename -n 'our $i; s/\d+/sprintf("new\/%03d", $i++)/e' *.*
它失敗了。如何設置啟動值,
$i
以便重命名可以按預期工作?
與
zsh
:autoload zmv n=0; zmv -n '*.jpg(#qn[1,100])' 'new/${(l[2][0])$((++n))}.jpg'
最多可重命名 100 個 jpeg 文件(按數字排序)。
-n
(如果滿意,請刪除試執行)。使用
perl
基於- 的rename
s 和基本 shell,您可以做一些接近的事情(沒有原始列表的數字排序,也沒有保護措施zmv
):rename -n ' our $i //= 1; exit if $i > 100; $_ = sprintf "new/%02d.jpg", $i++' ./*.jpg
rename
使用.perl
_$_
該程式碼旨在更改$_
為文件的新名稱。這裡
our $i
定義了$i
變數的範圍。您不希望本地範圍像您希望從一個文件到下一個文件中記住my $i
增量值一樣,因此(有關詳細資訊,請參閱)。$i``our``perldoc -f our
s/regexp/replacement/flags
perl 構造是對$_
. 如果您從頭開始建構替換名稱,則此處不需要它。