Rename

如何在重命名命令中增加變數值

  • March 1, 2021

我想將文件重命名為遞增數字格式,如下所示:

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基於- 的renames 和基本 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/flagsperl 構造是對$_. 如果您從頭開始建構替換名稱,則此處不需要它。

引用自:https://unix.stackexchange.com/questions/636961