GNU/Linux >> Belajar Linux >  >> Linux

Batch Ubah Nama File Menjadi Penomoran Berurutan?

Saya mencoba untuk mengganti nama banyak file di shell saya, dan meskipun ada banyak materi tentang itu di internet, sepertinya saya tidak dapat menemukan solusi untuk kasus khusus saya.

Saya memiliki banyak file yang (sepertinya) memiliki “timestamp-id”:

abc_128390.png
abc_138493.png
abc_159084.png
...

yang ingin saya tukarkan dengan counter:

abc_001.png
abc_002.png
abc_003.png
...

Pendekatan naif saya (banyak) akan seperti:

mv abc_*.png abc_{001..123}.png

Juga, saya tidak dapat menemukan cara untuk membuatnya bekerja dengan for -loop.

FWIW, sayangnya rename tidak tersedia pada sistem khusus ini.

Setiap saran akan sangat dihargai!

Jawaban yang Diterima:

Saya tidak dapat memikirkan solusi yang menangani penambahan penghitung dengan cara yang lebih cerdas, tetapi ini akan berhasil:

i=0
for fi in abc_??????.png; do
    mv "$fi" abc_$i.png
    i=$((i+1))
done

Seharusnya aman menggunakan abc_*.png karena diperluas sebelum mv pertama pernah dieksekusi, tetapi akan berguna untuk menjadi sangat spesifik karena Anda hanya menginginkan file dengan stempel waktu enam karakter di bagian akhir.


Linux
  1. Cara Mengganti Nama File di Linux

  2. Tidak Dapat Mengganti Nama File Di Samba Share?

  3. Optimalkan File PNG Secara Rekursif

  1. Bagaimana Cara Mengganti Nama Banyak File Menggunakan Regex?

  2. Linux mengganti nama file menjadi huruf besar

  3. Konversi batch PNG ke JPG di linux

  1. Ganti Nama File Di Direktori?

  2. Bagaimana Cara Mengganti Nama Banyak File Menggunakan Find?

  3. Metamorphose 2 – Batch Ganti Nama File dan Folder Anda di Linux