การใช้ Perl เปลี่ยนชื่อ
ตามที่ขอ.
สำหรับสิ่งที่คำถามของคุณแสดงให้เห็น:
เปลี่ยนชื่อ -n 's/^(\d+)/sprintf "%03d", $1-10/e' *
เอาต์พุตแบบแห้ง:
เปลี่ยนชื่อ (011.bar.psd, 001.bar.psd)
เปลี่ยนชื่อ (011.baz.gif, 001.baz.gif)
เปลี่ยนชื่อ (011.foo.txt, 001.foo.txt)
เปลี่ยนชื่อ (012.corge.png, 002.corge.png)
เปลี่ยนชื่อ (012.qux.js, 002.qux.js)
เปลี่ยนชื่อ (020.thud.txt, 010.thud.txt)
สำหรับชื่อคำถามที่มีคำนำหน้าตามลำดับจริง:
เปลี่ยนชื่อ -n -E 'ใช้ vars q{$n}' -e 's/^(\d+)/sprintf "%03d", ++$n/e' *
เปลี่ยนชื่อ (011.bar.psd, 001.bar.psd)
เปลี่ยนชื่อ (011.baz.gif, 002.baz.gif)
เปลี่ยนชื่อ (011.foo.txt, 003.foo.txt)
เปลี่ยนชื่อ (012.corge.png, 004.corge.png)
เปลี่ยนชื่อ (012.qux.js, 005.qux.js)
เปลี่ยนชื่อ (020.thud.txt, 006.thud.txt)
สำหรับอันแรก หากคุณไม่ต้องการฮาร์ดโค้ดเดลต้า 10
:
เปลี่ยนชื่อ -n -E 'ใช้ vars q{$delta}' -e '
ส{^(\d+)}{
$delta = $1 - 1 เว้นแต่จะกำหนด $delta;
sprintf "%03d", $1 - $เดลต้า
}จ
' *