[RISOLTO] Rinominare piu file (comando rename ed mmv)

Installazione, configurazione e uso di programmi e strumenti.
Scrivi risposta
firstlord

[RISOLTO] Rinominare piu file (comando rename ed mmv)

Messaggio da firstlord »

Salve a tutti, vorrei sapere come si fa a rinominare da shell più file assieme, mi spiego: ho 10 file ed ad ognuno di essi ci vorrei aggiungere una cosa all'inizio. come dovrei fare ?
Ultima modifica di firstlord il lunedì 6 agosto 2007, 19:25, modificato 1 volta in totale.
Avatar utente
takeshi
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 789
Iscrizione: venerdì 24 novembre 2006, 18:33

Re: Rinominare piu file

Messaggio da takeshi »

Per rinominare tutti i files *.jpg nella directory corrente aggiungendo (per fare un esempio che può avere un senso) la data all'inizio del nome, si può fare affidamento sul ciclo for:

Codice: Seleziona tutto

for s in *.jpg; 
do 
        mv $s `date -I`$s; 
done
che per comodità può essere eseguito su di una sola riga:

for s in *.jpg; do mv $s `date -I`$s; done


Modificato: mancava una 's' :D
Ultima modifica di takeshi il lunedì 6 agosto 2007, 15:21, modificato 1 volta in totale.
Raising Elephants Is So Utterly Boring
firstlord

Re: Rinominare piu file

Messaggio da firstlord »

Grazie, stavo cercando di utilizzare il comando rename con le regex ma ci capisco poco.
firstlord

Re: Rinominare piu file

Messaggio da firstlord »

Scusate nessuno sa mica come si fa?

1.pdf ---------> [fr]1.pdf
2.pdf ---------> [fr]2.pdf
3.pdf ---------> [fr]3.pdf
4.pdf ---------> [fr]4.pdf
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: Rinominare piu file

Messaggio da difesaparcosempione »

mv 1.pdf \[fr\]1.pdf

ciao
;)
firstlord

Re: Rinominare piu file

Messaggio da firstlord »

Grazie, per rinominarli tutti assieme ho provato:

Codice: Seleziona tutto

mv *.pdf \[fr\]*.pdf
ma mi dice:

Codice: Seleziona tutto

mv: target `[fr]1.pdf' is not a directory
Avatar utente
takeshi
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 789
Iscrizione: venerdì 24 novembre 2006, 18:33

Re: Rinominare piu file

Messaggio da takeshi »

ma mi dice:

Codice:

mv: target `[fr]1.pdf' is not a directory
E' perché il comando mv quando il primo argomento è una lista di files richiede che il secondo sia una directory (quella in cui verranno spostati tutti i files).

Per fare quello che richiedi puoi utilizzare a scelta rename o find o un semplice for:

Codice: Seleziona tutto

rename 's/^/[fr]/' *.pdf

Codice: Seleziona tutto

find ./*.pdf -maxdepth 1 -exec mv {} \[fr\]{} \;

Codice: Seleziona tutto

for i in *.pdf; do mv $i \[fr\]$i; done
Raising Elephants Is So Utterly Boring
firstlord

Re: Rinominare piu file

Messaggio da firstlord »

Codice:

Codice: Seleziona tutto

rename 's/^/[fr]/' *.pdf
evvai! grazie mille  ;D

mi postresti spiegare il significato dei vari pezzi del comando? e se invece volessi eliminare il prefisso?
Avatar utente
takeshi
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 789
Iscrizione: venerdì 24 novembre 2006, 18:33

Re: Rinominare piu file

Messaggio da takeshi »

mi postresti spiegare il significato dei vari pezzi del comando?

Codice: Seleziona tutto

rename 's/^/[fr]/' *.pdf
s/  =  sostituisci

/^/ = l'inizio della stringa
/[fr]/ con [fr]

il resto della stringa (l'intero nome del file) viene riscritto pari pari.

Una versione forse più leggibile e corretta è

Codice: Seleziona tutto

rename 's/.*/[fr]$&/' *.pdf
che significa letteralmente:

s/  = sostituisci

/.*/  = qualsiasi stringa formata da 0 o più caratteri
/[fr]$&/  = con  [fr] più la stringa che hai trovato
e se invece volessi eliminare il prefisso?
Per eliminare il prefisso [fr] appena inserito devi cercarlo e sostituirlo con la stringa nulla così:

Codice: Seleziona tutto

rename s/\[fr\]// *.pdf
Per ulteriori informazioni:
Raising Elephants Is So Utterly Boring
Avatar utente
simo_magic
Rampante Reduce
Rampante Reduce
Messaggi: 9496
Iscrizione: lunedì 18 dicembre 2006, 21:37
Località: Piemonte

Re: Rinominare piu file

Messaggio da simo_magic »

ma usare un bel programmino fatto allo scopo no???

Codice: Seleziona tutto

sudo apt-get install mmv
hai 10 file aaax.mpg con x un numero e li vuoi trasformare in aaa0x.mpg?
bene

Codice: Seleziona tutto

mmv 'aaa*.mpg' 'aaa0#1.mpg'
per ulteriori dettagli

Codice: Seleziona tutto

man mmv

ps se cercavi trovavi almeno 2 post in cui ne ho già parlato io stesso
firstlord

Re: Rinominare piu file

Messaggio da firstlord »

@takeshi

Grazie!  ;D Ora me lo leggero!


@simo_magic
ma usare un bel programmino fatto allo scopo no???
Volevo utilizzare gli strumenti di default.
Scrivi risposta

Ritorna a “Applicazioni”

Chi c’è in linea

Visualizzano questa sezione: Majestic-12 [Bot] e 7 ospiti