Noms de fichiers : Caractères inhabituels

Résolu
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   -  
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   -
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 !
A voir également:

13 réponses

jee pee Messages postés 41520 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
bonjour,

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

cdt
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

fait une sauvegarde avec tar de quelques fichiers et envoie par mail (regarde mon profil)
je vais voir ça chez moi
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
C parti !

Merci ;-)
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
Et avec
mv *CRA_CMO_200*.txt* destination
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
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
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut et un truc du genre :
cd  /DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/
for i in *;do mv ${i} ${i//^[[00m/};done
;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
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 !
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
[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 ...

0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
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)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention  
 
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 ;-\
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Tu peux m'envoyer un bout de ton fichier ? ( voir profil)
0
aralicia Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   1
 
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.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
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


!!!!
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
la commande locale te donne quoi?
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
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=
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
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
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
PS1='\[\033[0;31;40m\u@\h:\w\[\e[0;m\]\$ '
;-))
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
J'avais recopié çà depuis le net : je ne comprends rien à la syntaxe des prompts !!
0