Pagina 1 di 1

[RISOLTO] bulk rename via bash

Inviato: dom 20 mag 2012, 15:33
da Eberoth
Salve a tutti,
recentemente mi sono trovato a dover rinominare una trentina di file contenuti in una singola directory e con nomi che seguivano il modello:

Codice: Seleziona tutto

prefisso-nomefile.ext
dove "prefisso" ed estenzione sono uguali per tutti i file e solo la parte "nomecapitolo" è diversa.

Quello che dovevo fare era rimpianziare "prefisso" con "nuovoprefisso", in modo da ottenere gli stessi trenta file nella forma:

Codice: Seleziona tutto

nuovoprefisso-nomefile.ext
Dopo qualche esperimento con mv e cicli for, ho optato per la (poco elegante ma molto comoda) utility "bulk rename" di xfce... ma nel frattempo la cosa è diventata una questione personale e quindi eccomi qui a chiedervi aiuto.

Qualcuno di voi sa come potrei scrivere uno script che mi permetta di ottenere lo stesso risultato?

Re: bulk rename via bash

Inviato: dom 20 mag 2012, 15:42
da targzeta
Così ad occhio e a memoria:

Codice: Seleziona tutto

cd dir
for file in *
do
  mv $file nuovoprefisso-${file#*-}
done
Leggi il man della bash e cerca Parameter Expansion.

Infatti:

Codice: Seleziona tutto

$> mkdir /tmp/casa

$> cd /tmp/casa

$> for i in $(seq 20)
> do
> touch prefisso-casa$i.ext
> done

$> ls
totale 0
0 prefisso-casa1.ext   0 prefisso-casa16.ext  0 prefisso-casa4.ext
0 prefisso-casa10.ext  0 prefisso-casa17.ext  0 prefisso-casa5.ext
0 prefisso-casa11.ext  0 prefisso-casa18.ext  0 prefisso-casa6.ext
0 prefisso-casa12.ext  0 prefisso-casa19.ext  0 prefisso-casa7.ext
0 prefisso-casa13.ext  0 prefisso-casa2.ext   0 prefisso-casa8.ext
0 prefisso-casa14.ext  0 prefisso-casa20.ext  0 prefisso-casa9.ext
0 prefisso-casa15.ext  0 prefisso-casa3.ext

$> for file in *
> do
> mv $file nuovoprefisso-${file#*-}
> done

$> ls
totale 0
0 nuovoprefisso-casa1.ext   0 nuovoprefisso-casa19.ext
0 nuovoprefisso-casa10.ext  0 nuovoprefisso-casa2.ext
0 nuovoprefisso-casa11.ext  0 nuovoprefisso-casa20.ext
0 nuovoprefisso-casa12.ext  0 nuovoprefisso-casa3.ext
0 nuovoprefisso-casa13.ext  0 nuovoprefisso-casa4.ext
0 nuovoprefisso-casa14.ext  0 nuovoprefisso-casa5.ext
0 nuovoprefisso-casa15.ext  0 nuovoprefisso-casa6.ext
0 nuovoprefisso-casa16.ext  0 nuovoprefisso-casa7.ext
0 nuovoprefisso-casa17.ext  0 nuovoprefisso-casa8.ext
0 nuovoprefisso-casa18.ext  0 nuovoprefisso-casa9.ext
Emanuele

Re: bulk rename via bash

Inviato: dom 20 mag 2012, 16:01
da Eberoth
Ok, grazie spina, in effetti la soluzione era proprio davanti ai miei occhi ma come al solito non l'ho vista.

Re: [RISOLTO] bulk rename via bash

Inviato: dom 20 mag 2012, 16:35
da conraid
rename prefisso- nuovoprefisso- prefisso-*

Re: [RISOLTO] bulk rename via bash

Inviato: dom 20 mag 2012, 16:41
da Eberoth
ok, dopo aver letto la risposta di conraid mi sento ancora più stupido.

Re: [RISOLTO] bulk rename via bash

Inviato: dom 20 mag 2012, 16:42
da targzeta
Io neanche lo conoscevo quel comando :)

Emanuele