Repository 32bit  Forum
Repository 64bit  Wiki

[RISOLTO] bulk rename via bash

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

[RISOLTO] bulk rename via bash

Messaggioda Eberoth » dom mag 20, 2012 14:33

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?
Ultima modifica di Eberoth il dom mag 20, 2012 15:03, modificato 1 volta in totale.
Avatar utente
Eberoth
Linux 2.4
Linux 2.4
 
Messaggi: 376
Iscritto il: lun ago 24, 2009 8:22
Slackware: -current
Kernel: 3.13.6
Desktop: KDE4
Distribuzione: Slackel64

Re: bulk rename via bash

Messaggioda targzeta » dom mag 20, 2012 14:42

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6155
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: bulk rename via bash

Messaggioda Eberoth » dom mag 20, 2012 15:01

Ok, grazie spina, in effetti la soluzione era proprio davanti ai miei occhi ma come al solito non l'ho vista.
Avatar utente
Eberoth
Linux 2.4
Linux 2.4
 
Messaggi: 376
Iscritto il: lun ago 24, 2009 8:22
Slackware: -current
Kernel: 3.13.6
Desktop: KDE4
Distribuzione: Slackel64

Re: [RISOLTO] bulk rename via bash

Messaggioda conraid » dom mag 20, 2012 15:35

rename prefisso- nuovoprefisso- prefisso-*
Avatar utente
conraid
Staff
Staff
 
Messaggi: 11994
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: [RISOLTO] bulk rename via bash

Messaggioda Eberoth » dom mag 20, 2012 15:41

ok, dopo aver letto la risposta di conraid mi sento ancora più stupido.
Avatar utente
Eberoth
Linux 2.4
Linux 2.4
 
Messaggi: 376
Iscritto il: lun ago 24, 2009 8:22
Slackware: -current
Kernel: 3.13.6
Desktop: KDE4
Distribuzione: Slackel64

Re: [RISOLTO] bulk rename via bash

Messaggioda targzeta » dom mag 20, 2012 15:42

Io neanche lo conoscevo quel comando :)

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6155
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM


Torna a Gnu/Linux in genere

Chi c’è in linea

Visitano il forum: Google [Bot] e 1 ospite