GNU/Linux >> Linux Esercitazione >  >> Linux

Rinominare i file in batch con una numerazione sequenziale?

Sto cercando di rinominare in batch un gruppo di file nella mia shell e, anche se su Internet c'è molto materiale a riguardo, non riesco a trovare una soluzione per il mio caso specifico.

Ho un sacco di file che hanno (che sembra essere) un "timestamp-id":

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

che vorrei scambiare con un contatore:

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

Il mio (molto) ingenuo approccio sarebbe qualcosa del tipo:

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

Inoltre, non riuscivo a trovare un modo per farlo funzionare con un for -ciclo.

FWIW, purtroppo rename non è disponibile su questo particolare sistema.

Qualsiasi consiglio sarebbe molto apprezzato!

Risposta accettata:

Non riesco a pensare a una soluzione che gestisca l'incremento del contatore in modo più intelligente, ma dovrebbe funzionare:

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

Dovrebbe essere sicuro usare abc_*.png perché è espanso prima del primo mv viene mai eseguito, ma può essere utile essere molto specifici in quanto si vogliono solo file con un timestamp di sei caratteri alla fine.


Linux
  1. Come rinominare i file in Linux

  2. Come rinominare molti file usando un'espressione regolare?

  3. Ottimizza ricorsivamente i file PNG

  4. Linux rinomina i file in maiuscolo

  5. Conversione in batch della codifica in file

Come rinominare i file usando la riga di comando in Linux

Come rinominare uno o più file in Linux

8 metodi per rinominare più file contemporaneamente in Linux

Come convertire in batch file PDF su Linux

Come rinominare i file in Ubuntu 20.04

Linux Rinomina estensione file multipli