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 -
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 !
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:
- Noms de fichiers : Caractères inhabituels
- Explorateur de fichiers - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Les noms des animaux - Télécharger - Études & Formations
- Gestionnaire de fichiers - Télécharger - Gestion de fichiers
13 réponses
Salut,
fait une sauvegarde avec tar de quelques fichiers et envoie par mail (regarde mon profil)
je vais voir ça chez moi
fait une sauvegarde avec tar de quelques fichiers et envoie par mail (regarde mon profil)
je vais voir ça chez moi
Et avec
mv *CRA_CMO_200*.txt* destination
mv *CRA_CMO_200*.txt* destination
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
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
Salut et un truc du genre :
cd /DATA/CRA/CRA_FOR_SISTEER/CMO_PRE/ for i in *;do mv ${i} ${i//^[[00m/};done;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !
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 !
[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 ...
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)
^[[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)
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.
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.
Salut,
voici une simulation
avec le 1er rename je renomme les fichiers avec le caractère bizzare
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
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=
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=
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
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