Pagina 1 di 1

Problemi con nomi di file copiati da Win!

Inviato: lun 26 dic 2005, 11:58
da ChriD
Ho notato un problemuccio.....

ho copiato vari files da una partizione su cui è installato windows.....

il problema consiste nei backslash \

Credo il problema sia legato al fatto che i nomi dei files in win possono essere anche chiamati con spazi mentre in linux no, per cui ogni volta che devo chiamare un files devo mettere un backslash prima dello spazio.....

Esempio:

In win: Ciao - Bella ciao.mp3
per chiamarlo da linux: Ciao\ -\ Bella ciao.mp3

C'è un modo per risolvere oppure devo rinominare file per file?????

Inviato: lun 26 dic 2005, 12:30
da Vlk
Hai sbagliato: in Linux dovresti chiamarlo Ciao\ -\ Bella\ ciao :)
Comunque non c'entra nulla Windows. Un qualsiasi file composto da due nomi separati da uno spazio, su Linux si mette \ dopo il primo nome e quindi si da lo spazio. Questo serve al sistema che altrimenti crederebbe di trovarsi davanti i due files "Bella" e "ciao". Ovviamente se apri Kde, Gnome o un qualsiasi altro windows manager vedrai il nome senza i \, ma se la stessa directory la apri da shell e dai ls tutti i file avranno \. Ciao
p.s. perdonate l'itagliano

Inviato: lun 26 dic 2005, 12:38
da ChriD
Vlk ha scritto:Hai sbagliato: in Linux dovresti chiamarlo Ciao\ -\ Bella\ ciao :)
Comunque non c'entra nulla Windows. Un qualsiasi file composto da due nomi separati da uno spazio, su Linux si mette \ dopo il primo nome e quindi si da lo spazio. Questo serve al sistema che altrimenti crederebbe di trovarsi davanti i due files "Bella" e "ciao". Ovviamente se apri Kde, Gnome o un qualsiasi altro windows manager vedrai il nome senza i \, ma se la stessa directory la apri da shell e dai ls tutti i file avranno \. Ciao
p.s. perdonate l'itagliano
Si hai ragione......

l'errore era dovuto al fatto che uso il tab e quindi non avevo notato gli altri \\\\
comunque non si potrebbe creare uno script che sostituisce i backslash e lo spazio con un carattere di underscore????

Inviato: lun 26 dic 2005, 13:59
da Paoletta
Un qualsiasi file composto da due nomi separati da uno spazio, su Linux si mette \ dopo il primo nome e quindi si da lo spazio.
si possono usare anche gli apici doppi e singoli; es:
"Ciao bella ciao" ed a me sembra molto più comodo;

lo script...se ho tempo (e voglia) te lo faccio io! :wink:

Inviato: lun 26 dic 2005, 16:53
da first
su un sito ho trovato questo semplice accorgimentoda shell, riporto tale quale tu vedi di modificartelo come credi


2.1.1. Correzione dei nomi di file

Raggruppate tutti i file MP3 in una directory.

Se qualche nome di file contiene spazi, prima convertiteli in underscore:

for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done

Questo primo passaggio è importante perché, anche se unix permette la presenza di spazi nei nomi di file, la maggior parte dei programmi vengono confusi.

Se i vostri file MP3 provengono da DOS/Windows, potrebbero avere estensioni in maiuscolo. Potete convertire in minuscolo i nomi interi o solo le estensioni. Per avere tutto minuscolo:

for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done

per convertire solo le estensioni:

for i in *.MP3; do mv "$i" "`basename "$i" .MP3`.mp3"; done


qui il link che proporrei fosse messo nell howto di slacky.it perche e molto semplice e chiaro sul come masterizzare da linux

http://it.tldp.org/HOWTO/MP3-CD-Burning/audio.html

Inviato: gio 9 feb 2006, 14:24
da Paoletta

Codice: Seleziona tutto

#!/bin/bash
#lo script sostituisce gli spazi nei nomi dei files 
#della direcory in cui viene lanciato con _
#
#prima memorizza i nomi dei files in un file di appoggio, poi per ciascun file genera il nuovo nome;
#indi se non esistono nella stessa directory files con il nuovo nome e se il nome 
#contiene effettivamente spazi si opera la sostituzione

ls -1 > /tmp/fileScript.txt
while read valore
do
        nuovoVal=`echo "$valore" | sed 's/\\ /_/g'`
        ls -l ./"$nuovoVal" >/dev/null 2>&1
        if [ \( $? -ne 0 \) -a  \( "$nuovoVal" != "$valore" \)  ];then
                mv "$valore" "$nuovoVal"
        fi      
done</tmp/fileScript.txt      
rm /tmp/fileScript.txt