Come rinominare i file in numeri di sequenza incrementali monotonicamente seguiti da un suffisso?


0

Voglio rinominare tutti i file in una determinata directory con un numero seguito da un suffisso. Ad esempio, desidero rinominare tutti i file * .jpg in 1.jpg, 2.jpg, 3.jpg, ...

Ho pensato di usare findper questo (qualcosa del genere find ./*.jpg --exec mv {} <number_of_iteration>.jpg) ma non so cosa avrei inserito <number_of_iteration>.

Posso usare findper fare questo? O c'è un modo migliore?


Ciao Gabrijel. Ho modificato la tua domanda per concentrarmi sul problema che sembri voler risolvere, piuttosto che sulla soluzione proposta che potrebbe essere o meno il modo migliore per farlo. Se ritieni che nel fare ciò abbia cambiato il tuo intento, sentiti libero di modificare ulteriormente (consigliato) o ripristinare completamente la modifica (fai clic sul link "modificato ... fa" sopra il mio nome e fai clic su "ripristina" sopra la revisione vuoi tornare a).
un CVn del

Risposte:


1

Dovresti mantenere l'iterazione separatamente. Ad esempio, utilizzare uno script move_countcontenente quanto segue: -

[ -w ~/MoveCount ] || echo 0 >~/MoveCount
read count <~/MoveCount
((++count))
echo $count >~/MoveCount
mv "$1" "$count.${1##*.}"

Quindi il tuo findcomando diventerebbe:

find -iname "*.jpg" -exec bash -c "move_count {}" \;

Si noti che bashviene chiamato esplicitamente perché l'impostazione predefinita shnon comprende la sintassi che ho usato. In alternativa, crea #!/bin/bashla prima riga di move_count.


Non potresti semplicemente metterti #!/bin/bashin cima e sbarazzarti di bash -cdentro -exec?
un CVn del

Sì, naturalmente. Mi sono abituato a utilizzare bash -cdopo aver precedentemente avuto un altro problema con l'utilizzo find -execdi un file batch. Non riesco proprio a ricordare i dettagli, ma potrebbe essere stato a che fare con dove sono stati espansi i parametri, e questo non si applica qui.
AFH,

Ho aggiornato la mia risposta e rimosso .jpgdalla move_countchiamata: la mia prima bozza ha utilizzato il secondo parametro come estensione, ma l'ho modificato per estrarre l'estensione dal primo parametro, in quanto mantiene il caso originale.
AFH,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.