Rinominare le immagini in ordine specifico


8

Questo è il mio problema: ho una cartella con 500 immagini denominata:

1.jpg
2.jpg
3.jpg

e così via..

Ho copiato quella cartella e ora ho bisogno di rinominare quelle stesse immagini da 501 a 1000 ma in questo modo:

1.jpg  becomes    501.jpg
2.jpg  becomes    502.jpg
3.jpg  becomes    503.jpg          
....

Quando utilizzo il mio comando di ridenominazione standard:

i=501;for img in $(find . -iname '*.jpg'); do echo -n "Converting $img"; mv $img $i.jpg  && echo $i && ((i++)); done

Ordina immagini da 501 a 1000 ma sono tutte sparse:

23.jpg becomes 501.jpg,    
66.jpg becomes 502.jpg 
...   

(sono nel giusto ordine, ma li mescola)

So che probabilmente mi manca un comando ...


Usa 2 variabili i e j mv $ i.jpg $ j.jpg e incrementa le tue variabili.
Pantera,

grazie, spero che lo capirai. Ho cercato ma non ho trovato la risposta.
Painkiller,

Solo curiosi, i nomi originali, in che gamma sono? Il numero originale deve essere rinominato + 500?
Jacob Vlijm,

Sì Jacob tu +500. Sto cercando di scrivere ciò che Bodhi mi ha detto, ma non sono così bravo in LNUX, mi sono ammazzato per scrivere il comando di rinomina sopra: D
Painkiller

Il mio povero laptop è molto occupato, ma se non arriva una risposta soddisfacente (di cui dubito :)) e se non ce la farete, stasera posterò un piccolo script in pitone.
Jacob Vlijm,

Risposte:


7

Prova Thunar , che è il file manager predefinito per Xfce. È molto leggero e viene fornito con un pratico strumento di ridenominazione di massa. È possibile installare Thunar eseguendo il seguente comando in Terminale:

sudo apt-get install thunar

Probabilmente sarai in grado di installare anche dal software Ubuntu.

Come usare l'utilità

  1. Dopo aver installato Thunar, avvia l' utilità Bulk Rename .
  2. Fare clic sull'icona + e aggiungere i file che si desidera rinominare nell'ordine corretto.
  3. Fai clic sulla casella a discesa appena sotto l'elenco dei file selezionati e seleziona Numerazione . Fai clic sulla casella accanto ad essa e seleziona Solo nome .
  4. Nella casella " Inizia con: " inserisci 501, lascia vuota la casella " Testo: ". Dovresti vedere l'anteprima delle modifiche nella colonna Nuovo nome .
  5. Per applicare le modifiche fai clic sul pulsante Rinomina file .

Oltre alla numerazione questa utility supporta le seguenti azioni:

  • Inserisci data / ora
  • Inserisci / Sovrascrivi
  • Rimuovi personaggi
  • Cerca e sostituisci
  • Maiuscolo minuscolo

Grazie amico sei il MVP! Devo solo aggiungere che avevo anche bisogno di cambiare il formato del testo in: Testo - Numero. (nel caso in cui qualcun altro lo usi)
Painkiller,

2
Passare da fm a ... eseguire un semplice compito mi sembra eccessivo. La scrittura di una semplice estensione di script nautilus richiede meno tempo rispetto alla commutazione di fm.
Jacob Vlijm,

1
@JacobVlijm Sto usando Thunar solo per lo strumento per rinominare in blocco insieme a Nautilus. Thunar è piuttosto leggero e non sembra causare alcun conflitto con Nautilus o altri file manager.
pomsky,

4
Se non si desidera un secondo file manager, pyrenamerfunziona perfettamente ed è quello che uso per rinominare i bunker quando voglio una GUI per confrontare l'output prima / dopo.
Tom Brossman,

13

Il findcomando trova file in ordine 'directory' ( 23.jpg, 66.jpg, ...). potresti mettere un |sortdopo la scoperta.

Ma i tuoi metodi sono troppo complessi.

for i in $( seq 1 500 ) ; do
    j=$(( $i + 500 ))
    mv $i.jpg $j.jpg
done 

3
for i in {1..500}; do ...sarebbe più facile l'ape.
David Foerster,


5

Se ho capito cosa stai chiedendo correttamente, penso che puoi farlo usando lo strumento di rinomina predefinito:

rename 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg -vn

È necessario rimuovere l' -vnopzione (dettagliata - nessuna azione) dopo il test, per rendere effettiva la modifica.


Come si può installare questo strumento in Ubuntu? per impostazione predefinita renameè collegato prename(1)dal perlpacchetto che non supporta tutte queste opzioni della riga di comando.
David Foerster,

@DavidFoerster Forse hai ragione. Non sono riuscito a trovare un collegamento di installazione corrente (non lo uso da circa 2014). Con lo strumento di rinomina predefinito, penso che l'espressione regex dovrebbe essere 's/^(\d+)/sprintf("%d",$1+500)/e'. Aggiornerò la mia risposta di conseguenza. Grazie.
sempaiscuba,

1
La tua risposta è ora un duplicato di AFSHIN .
David Foerster,

@DavidFoerster Siamo spiacenti, quale risposta? Le uniche altre risposte che posso vedere sono di Pomsky e Waltinator. Né utilizzare rinominare (nessuna versione).
sempaiscuba,

Il collegamento diretto alla risposta intendo è incluso nel mio commento precedente.
David Foerster,

0

Un altro modo per raggiungere questo obiettivo con il solo comando shell

count = 1; per i in ls; do mv $ i CN $ ((count ++)). $ {i ## *.}; fatto

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.