[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [bash] rimuovere spazi nel nome dei file e delle directory.



Il 06/06/2011 00:10, gollum1 ha scritto:

Ciao All,

come da oggetto, vorrei fare uno script che mi rimuova tutti gli spazi
(sostituendoli con il carattere underscore) partendo da una directory, e per
tutte le sue sottodirectory e file in esse contenute.

ho provato con rename:

rename "s/ /_/g" $ORIG*

ma questo funziona solo nel primo livello ($ORIG), tralasciando tutto quello
contenuto in eventuali sottodirectory.

ho provato anche con find

find $ORIG | rename "s/ /_/g" -v

ma mi da errore, perché una volta rinominato una directory, tutti gli elementi
in essa contenuti praticamente non esistono più... e quindi non possono essere
rinominati (fanno riferimento al nome precedente della directory che li
conteneva).

ho provato anche a farlo in due step, uno mettendo il rename solo per le
directory e successivamente per i file... ma non funziona comunque, sempre per
lo stesso motivo precedente...

find $ORIG -type d | rename "s/ /_/g" -v

qualcuno ha idea di come potrei procedere? anche perché poi dovrei anche fare
il passaggio opposto, una volta completato il lavoro che devo fare su questi
file (lavoro che non posso fare se ci sono degli spazi nei nomi).

Byez
Da una vecchia mail: Maledetti spazi

OLDIFS=$IFS
IFS=$'\n'
for file in `ls .`
do
newfilename=`echo $file | sed  's/ /_/g'`
  mv $file $newfilename
done
IFS=$OLDIFS

ciao
Beppe

--
le nuvole non hanno regole,
perchè non hanno mai rinunciato
alla libertà di sognare.



Reply to: