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.