Les Allergies
Alimentaires
Posez votre question Signaler

Noms de fichiers : Caractères inhabituels [Résolu]

tlep 591Messages postés 21 février 2002Date d'inscription - Dernière réponse le 27 juin 2007 à 11:58
Bonjour,
auriez-vous une idée pour pouvoir déplacer des fichiers ayant des noms de caractère étranges :
^[[00mCRA_CMO_20060719_000000022.txt^[[00m
^[[00mCRA_CMO_20060720_000000023.txt^[[00m
^[[00mCRA_CMO_20060720_000000024.txt^[[00m
Ce sont des caractères invisibles qui se sont déposés je ne sais comment !
Du coup, impossible de faire quoique ce soit avec :
for i in $(ls /DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/);do fic=$(echo "/DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/$i") && ls "$fic";done
Ca me donne:
ls: /DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/CRA_CMO_20061121_000000333.txt: Aucun fichier ou répertoire de ce type
ls: /DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/CRA_CMO_20061121_000000334.txt: Aucun fichier ou répertoire de ce type
Une idée ? :-|
Merci !
Lire la suite 

Noms de fichiers : Caractères inhabituels »

19 réponses
Réponse
+0
moins plus
bonjour,

en mode graphique sur une console x-windows, ne peux tu pas les renommer ?

cdt
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

fait une sauvegarde avec tar de quelques fichiers et envoie par mail (regarde mon profil)
je vais voir ça chez moi
tlep- 26 juin 2007 à 17:06
C parti !

Merci ;-)
Ajouter un commentaire
Réponse
+0
moins plus
Et avec
mv *CRA_CMO_200*.txt* destination
tlep- 26 juin 2007 à 16:57
Merci,

mais le souci, c'est que je voulais faire le traitement suivant :

for i in $(ls /home/billingbzh/DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/);do dte=$(echo $i|cut -d"_" -f3) && if [ "${#dte}" = "8" ];then year=`expr substr $dte 1 4` && month=`expr substr $dte 5 2` && day=`expr substr $dte 7 2` && mkdir -p /home/billingbzh/DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/$year/$month/$day && mv -v "/home/billingbzh/DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/$i" /home/billingbzh/DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/$year/$month/$day/;fi;done

Pour déplacer chaque fichier dans des sous-répertoires YEAR/MONTH/DAY/ (à cause de la saturation du système)

Et j'obtiens sur chaque fichier un truc du genre :
mv: ne peut évaluer `/home/billingbzh/DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/\033[00mCRA_CMO_20060724_000000029.txt\033[00m': Aucun fichier ou répertoire de ce type
Ajouter un commentaire
Réponse
+0
moins plus
Salut et un truc du genre :
cd  /DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/
for i in *;do mv ${i} ${i//^[[00m/};done
;-))
Ajouter un commentaire
Réponse
+0
moins plus
Raté !

mv: `CRA_POST_20070506_000001513.txt' et `CRA_POST_20070506_000001513.txt' identifient le même fichier.

:-((

J'ai bidouillé pour le moment: récupéré la liste via "ls > monfichier.txt", modifié le fichier de texte en enlevant les caractères bizarres, puis lancé ma commande ci-dessus :

for i in $(cat mesfichiers.txt);do dte=$(echo $i|cut -d"_" -f3) && if [ "${#dte}" = "8" ];then year=`expr substr $dte 1 4` && month=`expr substr $dte 5 2` && day=`expr substr $dte 7 2` && mkdir -p /home/billingbzh/DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/$year/$month/$day && mv -v "/home/billingbzh/DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/$i" /home/billingbzh/DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/$year/$month/$day/;fi;done

Ca fonctionne, mais les noms des fichiers restent évidemment inexploitables !
Ajouter un commentaire
Réponse
+0
moins plus
[jp@MDK tmpfs]$ touch "^[[00mCRA_CMO_20060719_000000022.txt^[[00m"

[jp@MDK tmpfs]$ ls -1

^[[00mCRA_CMO_20060719_000000022.txt^[[00m
captures/
plop
plop~

[jp@MDK tmpfs]$ for i in *;do mv ${i} ${i//^[[00m/} 2>/dev/null ;done

[jp@MDK tmpfs]$ ls -1

captures/
CRA_CMO_20060719_000000022.txt
plop
plop~

[jp@MDK tmpfs]$
Chez moi ça marche mais enfin comme l'as dit "lami20j" il faut les originaux pour faire des tests approfondis ...

tlep- 26 juin 2007 à 17:41
Oui ,parce que dans ton exemple:
^[[00mCRA_CMO_20060719_000000022.txt^[[00m
Tous les caractères existent !

En fait, ^[[00m ce sont des caractères invisibles, que je n'aperçois que lorsque je fais un vi sur mesfichiers.txt, résultant de "ls > mesfichiers.txt"

sous vi, dans le nom du fichier, la séquence "^[" apparait en BLEU (comme les "^M" des fichiers DOS)
jipicy- 26 juin 2007 à 18:24
En fait, ^[[00m ce sont des caractères invisibles, que je n'aperçois que lorsque je fais un vi sur mesfichiers.txt, résultant de "ls > mesfichiers.txt"
Ben j'ai rien de tout ça môa ;-((
Tes fichiers ils me paraissent cleans, pas de caractères bizarres ;-\
Ajouter un commentaire
Réponse
+0
moins plus
Tu peux m'envoyer un bout de ton fichier ? ( voir profil)
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour.

Les "caracteres bizarres" sont des termcaps. Ils sont utiliés pour ajouter des effet de texte dans un emulateur de terminal (bold, couleurs...)
l'ideal pour les supprimer serait de pour les inhiber dans les commandes. n'étant pas doué en shellscript, je ne peut vous aider.
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

voici une simulation
avec le 1er rename je renomme les fichiers avec le caractère bizzare
lami20j@debian:~/c/tlep$ ls -1
lami20j@debian:~/c/tlep$ touch CRA_CMO_20060719_000000022.txt
lami20j@debian:~/c/tlep$ touch CRA_CMO_20060720_000000023.txt
lami20j@debian:~/c/tlep$ touch CRA_CMO_20060720_000000024.txt
lami20j@debian:~/c/tlep$ rename 's/(.*)/\e[0m$1\e[m/' *
lami20j@debian:~/c/tlep$ ls -1
?[0mCRA_CMO_20060719_000000022.txt?[m
?[0mCRA_CMO_20060720_000000023.txt?[m
?[0mCRA_CMO_20060720_000000024.txt?[m
lami20j@debian:~/c/tlep$ ls -1 | cat -t
^[[0mCRA_CMO_20060719_000000022.txt^[[m
^[[0mCRA_CMO_20060720_000000023.txt^[[m
^[[0mCRA_CMO_20060720_000000024.txt^[[m
lami20j@debian:~/c/tlep$ rename 's/.*(C.*\.txt).*/$1/' *
lami20j@debian:~/c/tlep$ ls -1
CMO_20060719_000000022.txt
CMO_20060720_000000023.txt
CMO_20060720_000000024.txt
lami20j@debian:~/c/tlep$ ls -1 | cat -t
CMO_20060719_000000022.txt
CMO_20060720_000000023.txt
CMO_20060720_000000024.txt
tlep- 26 juin 2007 à 18:44
Non, ca ne fonctionne pas: le fichier reste avec des caractères bizarres !

Apparemment, c'est le système de fichiers qui a un pb:

J'ai comparé sur une autre machine:

touch toto && ls -1 | cat -t
toto

En revanche, sur celle-ci :
touch toto && ls -1 | cat -t
^[[00m^[[00mtoto^[[00m


!!!!
Ajouter un commentaire
Réponse
+0
moins plus
la commande locale te donne quoi?
Ajouter un commentaire
Réponse
+0
moins plus
Sur la machine qui semble débloquer:

LANG=fr_FR@euro
LC_CTYPE="fr_FR@euro"
LC_NUMERIC="fr_FR@euro"
LC_TIME="fr_FR@euro"
LC_COLLATE="fr_FR@euro"
LC_MONETARY="fr_FR@euro"
LC_MESSAGES="fr_FR@euro"
LC_PAPER="fr_FR@euro"
LC_NAME="fr_FR@euro"
LC_ADDRESS="fr_FR@euro"
LC_TELEPHONE="fr_FR@euro"
LC_MEASUREMENT="fr_FR@euro"
LC_IDENTIFICATION="fr_FR@euro"
LC_ALL=

Sur la machine qui n'a pas le souci des noms de fichiers:

LANG=fr_FR
LANGUAGE=fr_FR
LC_CTYPE="fr_FR"
LC_NUMERIC="fr_FR"
LC_TIME="fr_FR"
LC_COLLATE="fr_FR"
LC_MONETARY="fr_FR"
LC_MESSAGES="fr_FR"
LC_PAPER="fr_FR"
LC_NAME="fr_FR"
LC_ADDRESS="fr_FR"
LC_TELEPHONE="fr_FR"
LC_MEASUREMENT="fr_FR"
LC_IDENTIFICATION="fr_FR"
LC_ALL=
Ajouter un commentaire
Réponse
+0
moins plus
J'ai une hyppothèse !

J'avais il y a longtemps changé le prompt de mon user pour le passer en rouge:

dans ~/.bashrc, j'avais spécifié :
PS1='\[\033[0;31;40m\u@\h:\w\$ \]'

J'ai remis la variable normale, et depuis les noms de fichiers semblent être lisibles !
Il semblerait que çà ne soit pas en fait un pb de nom donnés aux fichiers, mais de noms lus par le user.

Je ne comprends pas trop pourquoi, mais le problème semble stabilisé !

Thierry
Ajouter un commentaire
Réponse
+0
moins plus
PS1='\[\033[0;31;40m\u@\h:\w\[\e[0;m\]\$ '
;-))
tlep- 27 juin 2007 à 11:58
J'avais recopié çà depuis le net : je ne comprends rien à la syntaxe des prompts !!
Ajouter un commentaire
Ce document intitulé « Noms de fichiers : Caractères inhabituels » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?