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

Re: transfert de fichiers avec des caractères bizarres



Salut,

Le Fri, 05 Aug 2011 22:10:01 +0200, moi-meme a écrit :
[...]
> Je transfère par curlftpfs. Marche très bien. Sauf pour des fichiers
> avec des caractères bizarres style "?","'", espace et autres.
> C'est pas autorisé dans les noms mais j'ai récupéré les fichiers comme
> ça. Avec un cp et ça foire lamentablement mais avec mc aucun problème.
> Comment il fait cet artiste ?
Ce n'est pas ni ton NAS, ni le système qui est en cause, mais le fait que 
tu ne protèges pas les fameux caractères spéciaux. S'ils ne sont pas 
protégés, ils sont interprétés par ton shell. Ainsi, si tu utilises :
cp truc?abc.ext /NAS
ou
cp "truc?abc.ext" /NAS

Ton shell va modifier (interpréter) les fameux caractères avant de 
transmettre les arguments a cp. Les ? seront remplacés par un caractère 
qui permette de trouver un fichier dont le nom corresponde, les ' vont 
être interprétés comme une ouverture de chaine de caractere à ne pas 
interpréter et les espaces ne seront pas changés, mais seront interprétés 
par cp comm un séparateur de fichiers...

Pour les espaces, il te suffit d'utiliser les doubles quotes ", qui vont 
forcer tous les morceaux autour des espaces à ne faire qu'un avec les 
espace, mais, pour être totalement générique dans ton cas, il vaut mieux 
que tu encapsules tous tes noms de fichiers dans des apostrophes '. 
Ainsi, les espaces ne seront pas considérés comme des séparateurs, les ? 
ne seront pas interprétés, ... Les deux seuls inconvénients de cette 
syntaxe sont :
- tu dois protéger les apostrophes à l'intérieur de tes noms de fichiers 
pour qu'elles ne soient pas considérées comme une fin de chaine, tu 
remplaces tous les ' par des \'
- tu ne peux plus utiliser de substitution shell dans les noms de 
fichiers ($VARIABLE, par exemple).

donc, si tu tentes de copier le fichier
a b'c?.ext
tu peux utiliser :
cp 'a b\'c?.ext' /nas

protège aussi, si tu en as, les points d'exclamation qui ne sont pas 
protégés par les apostrophes.

> Je ne vais quand même pas tout copier avec mc. Une autre solution :
> renommer avec un : tr "?' " "___" dans un script.
tu devrais regarder du côté de la commande «rename»



A+
-- 
Francois


Reply to: