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

Signaler
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
-
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
-
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 !

13 réponses

Messages postés
32511
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 juillet 2021
7 826
bonjour,

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

cdt
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
Salut,

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

Merci ;-)
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 324
Et avec
mv *CRA_CMO_200*.txt* destination
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 871
Salut et un truc du genre :
cd  /DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/
for i in *;do mv ${i} ${i//^[[00m/};done
;-))
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
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 !
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 871
[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 ...

Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
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)
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 871 >
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012

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 ;-\
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 871
Tu peux m'envoyer un bout de ton fichier ? ( voir profil)
Messages postés
20
Date d'inscription
samedi 3 décembre 2005
Statut
Membre
Dernière intervention
26 juin 2007
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.
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
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


!!!!
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
la commande locale te donne quoi?
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
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=
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 871
PS1='\[\033[0;31;40m\u@\h:\w\[\e[0;m\]\$ '
;-))
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
118
J'avais recopié çà depuis le net : je ne comprends rien à la syntaxe des prompts !!