Newsgroup: it.comp.os.linux.iniziare
Titolo: rimuovere spazi dai files

ho una slackware 11 :
mi sono portato dei files da win
e una volta su linux gli spazi mi vengono
visualizzati come "\ "
ad esempio
pippo xx.mp3
viene visualizzato come:
pippo\ xx.mp3
non riesco a trovare un modo per rinominarli correttamente togliendo
gli spazi !
ho provato per esempio con :
 rename "s/ /_/g" *.mp3
ma non funziona ..
grazie !

 pippo\ xx.mp3
Io farei così: mv pippo\ xx.mp3 pippoxx.mp3
ciao
~~~~~~
Powered by Linux 2.6.17


il fatto è che ho bisogno di farlo su una lista di files piuttosto
lunga .........

 gli spazi !
ls *" "* | while read file; do
	target=${file// /_}
	mv "$file" "$target"
done
ciao ...
-- 
#include <stdio.h>
int main(void){char c[]={10,65,110,116,111,110,105,111,32,98,97,114,98,111,110,
101,32,60,104,105,110,100,101,109,105,116,64,116,105,115,99,97,108,105,110,101,
116,46,105,116,62,10,10,0};printf("%s",c);return 0;}

 wrote:

perfettamente funzionante !!
grazie 1000 !
ciao

  rename "s/ /_/g" *.mp3
	  ^^
virgolette semplici :
rename '/s/ /_/g/ *.mp3
Ciao
Ercole


Da provare:
for f in *; do
   n="`echo \"$f\" | sed 's/ /_/g'`"
   mv -f "$f" "$n"
done
Altrimenti usare find/xargs. Anche rename potrebbe andare...
Ciao,
-- 
        Roberto Divia`              Love at first sight is one of the greatest
Dep:PH Bat:53 Mailbox:C02110      labour-saving devices the world has ever seen
Route de Meyrin 385               ---------------------------------------------
Case Postale                                Phone:  
+41-22-767-4994
CH-1211 Geneve 23 CERN                      Fax:    
+41-22-767-9585
Switzerland                                 E-Mail: 
Robert...@cern.ch

 Ercole

Luca 001 ha scritto:

for i in *; do mv "$i" "`echo $i | tr " " "_"`"; done
Ciao


grazie a tutti    :)

  rename "s/ /_/g" *.mp3
for file in *.mp3
do mv $file ${file// /_}
done
-- 
|   Maurizio Loreti -- 
ROT13:ybe...@cq.vasa.vg
   |  (@_
| Un. of Padova, Dept. of Physics, Padova, Italy |  //\
|     
http://www.pd.infn.it/~loreti/mlo.html
     |  V_/_

 done
Non perche` non si possa battere in una 
shell semplicemente:
for f in *\ *; do mv "$f" "${f// /_}"; done
comunque la versione con ls ha un grosso difetto:
se e` presente una directory chiamata 
"contengo due spazi" non verra` rinominata la 
directory ma verranno rinominati i file 
eventualmente contenuti in essa.
Se questo non e` quello che si vuole:
ls -d *" "* |...

lunga .........
A farlo in serie c'è un problema: si possono generare dei conflitti.
Se tu hai
"file conspazio"
e
"filecon spazio"
ottieni un errore al secondo rename.
-- 
Ci sono 10 tipi di persone al mondo: quelle che capiscono il sistema binario
e quelle che non lo capiscono.

 ottieni un errore al secondo rename.
Veramente con l'algoritmo adottato i nuovi 
nomi sarebbero "file_conspazio" e "filecon_spazio"
e non ci sarebbe nessun conflitto.
Ma ammesso che ci potrebbe essere un conflitto 
di nomi non si potrebbe mai in alcun caso ed in 
nessun modo ottenere un errore.
Quello che succede e` che mv sovrascrive il 
secondo file (ovvero cancella il secondo file
e rinomina il primo).
A meno che `mv' non sia un alias per `mv -i`;
in tal caso mv chiedera` al prompt come comportarsi 
per risolvere il conflitto.

 ottieni un errore al secondo rename.
#!/bin/bash
cd $1 #dagli il path alla dir dove stanno i tuo file come argomento
for file in *.*
do
        nospace=${file//" "/""}
        mv "$file" "$nospace"
        echo $nospace
done
magari aggiungi anche il controllo di non fare la mv se file è uguale a
nospace, comunque, in linea di massima , funziona

 for file in *.*
???
e se mi capita un file senza il carattere "."? :P
-- 
Under construction

 file è uguale a nospace.
Se togli il punto e fai cosi':
for file in *\ * 
non c'e` bisogno di questo controllo.
Comunque senza questo controllo non ci sono 
conseguenze dannose: mv si rende ben conto 
che origine e destinazione sono uguali e 
genera un messaggio di errore.

 e se mi capita un file senza il carattere "."? :P
sě dai poi uno se l'aggiusta, fatela poco lunga

 sě dai poi uno se l'aggiusta, fatela poco lunga
... infatti ...
;-)))
