Pagina 1 di 1

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

Inviato: domenica 5 agosto 2007, 14:25
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 ?

Re: Rinominare piu file

Inviato: domenica 5 agosto 2007, 16:33
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

Re: Rinominare piu file

Inviato: domenica 5 agosto 2007, 17:23
da firstlord
Grazie, stavo cercando di utilizzare il comando rename con le regex ma ci capisco poco.

Re: Rinominare piu file

Inviato: lunedì 6 agosto 2007, 10:08
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

Re: Rinominare piu file

Inviato: lunedì 6 agosto 2007, 12:37
da difesaparcosempione
mv 1.pdf \[fr\]1.pdf

ciao
;)

Re: Rinominare piu file

Inviato: lunedì 6 agosto 2007, 13:24
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

Re: Rinominare piu file

Inviato: lunedì 6 agosto 2007, 15:20
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

Re: Rinominare piu file

Inviato: lunedì 6 agosto 2007, 15:37
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?

Re: Rinominare piu file

Inviato: lunedì 6 agosto 2007, 19:06
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:

Re: Rinominare piu file

Inviato: lunedì 6 agosto 2007, 19:09
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

Re: Rinominare piu file

Inviato: lunedì 6 agosto 2007, 19:24
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.