IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Trouver et remplacer les caractères non reconnu dans les noms de fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut Trouver et remplacer les caractères non reconnu dans les noms de fichier
    Bonsoir

    Il y a quelques années, j'ai passé mes CD sur ordinateur. Je les ai passé de supports en supports et maintenant, j'ai des caractères non reconnus.

    Voici ce que ça donne à partir de mon raspberry sous raspbian :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    root@raspberrypi:/mnt # ll sda1/francais/France\ Gall/il\ jouait\ du\ pianon\ debout/
    total 30600
    -rw-rw-r-- 1 troumad 481     235 janv. 25  2005 1980.m3u
    -rw-rw-r-- 1 troumad 481     195 janv. 25  2005 1980.txt
    -rw-rw-r-- 1 troumad 481 3374238 mars   7  2005 b?b? comme la vie.ogg
    -rw-rw-r-- 1 troumad 481 4692598 mars   7  2005 il jouait du piano debout.ogg
    -rw-rw-r-- 1 troumad 481 2657781 mars   7  2005 la chanteuse qui a tout donn?.ogg
    -rw-rw-r-- 1 troumad 481 3287942 mars   7  2005 la mort douce.ogg
    -rw-rw-r-- 1 troumad 481 1552126 mars   7  2005 les moments o? jaime tout le monde.ogg
    -rw-rw-r-- 1 troumad 481 4402871 mars   7  2005 ma vieille europe.ogg
    -rw-rw-r-- 1 troumad 481 2780952 mars   7  2005 parler parler.ogg
    -rw-rw-r-- 1 troumad 481 2944279 mars   7  2005 plus d?t?.ogg
    -rw-rw-r-- 1 troumad 481 2678245 mars   7  2005 plus haut.ogg
    -rw-rw-r-- 1 troumad 481 2945472 mars   7  2005 trop grand pour moi.ogg
    root@raspberrypi:/mnt # locale
    LANG=fr_FR.UTF-8
    LANGUAGE=
    LC_CTYPE="fr_FR.UTF-8"
    LC_NUMERIC="fr_FR.UTF-8"
    LC_TIME="fr_FR.UTF-8"
    LC_COLLATE="fr_FR.UTF-8"
    LC_MONETARY="fr_FR.UTF-8"
    LC_MESSAGES="fr_FR.UTF-8"
    LC_PAPER="fr_FR.UTF-8"
    LC_NAME="fr_FR.UTF-8"
    LC_ADDRESS="fr_FR.UTF-8"
    LC_TELEPHONE="fr_FR.UTF-8"
    LC_MEASUREMENT="fr_FR.UTF-8"
    LC_IDENTIFICATION="fr_FR.UTF-8"
    LC_ALL=
    Et à partir partir de mon portable sous Mageia :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    [troumad@localhost Troumad]$  ll /run/media/troumad/9c827cd3-a5ad-4a71-9868-80ea2953fbb6/francais/France\ Gall/il\ jouait\ du\ pianon\ debout/
    total 30600
    -rw-rw-r-- 1 troumad 481     235 janv. 25  2005 1980.m3u
    -rw-rw-r-- 1 troumad 481     195 janv. 25  2005 1980.txt
    -rw-rw-r-- 1 troumad 481 3374238 mars   7  2005 'b'$'\351''b'$'\351'' comme la vie.ogg'
    -rw-rw-r-- 1 troumad 481 4692598 mars   7  2005 'il jouait du piano debout.ogg'
    -rw-rw-r-- 1 troumad 481 2657781 mars   7  2005 'la chanteuse qui a tout donn'$'\351''.ogg'
    -rw-rw-r-- 1 troumad 481 3287942 mars   7  2005 'la mort douce.ogg'
    -rw-rw-r-- 1 troumad 481 1552126 mars   7  2005 'les moments o'$'\371'' jaime tout le monde.ogg'
    -rw-rw-r-- 1 troumad 481 4402871 mars   7  2005 'ma vieille europe.ogg'
    -rw-rw-r-- 1 troumad 481 2780952 mars   7  2005 'parler parler.ogg'
    -rw-rw-r-- 1 troumad 481 2944279 mars   7  2005 'plus d'$'\351''t'$'\351''.ogg'
    -rw-rw-r-- 1 troumad 481 2678245 mars   7  2005 'plus haut.ogg'
    -rw-rw-r-- 1 troumad 481 2945472 mars   7  2005 'trop grand pour moi.ogg'
    LANG=fr_FR.UTF-8
    LC_CTYPE="fr_FR.UTF-8"
    LC_NUMERIC="fr_FR.UTF-8"
    LC_TIME="fr_FR.UTF-8"
    LC_COLLATE="fr_FR.UTF-8"
    LC_MONETARY="fr_FR.UTF-8"
    LC_MESSAGES="fr_FR.UTF-8"
    LC_PAPER="fr_FR.UTF-8"
    LC_NAME="fr_FR.UTF-8"
    LC_ADDRESS="fr_FR.UTF-8"
    LC_TELEPHONE="fr_FR.UTF-8"
    LC_MEASUREMENT="fr_FR.UTF-8"
    LC_IDENTIFICATION="fr_FR.UTF-8"
    LC_ALL=
    Ou si je change la configuration de locale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    [troumad@localhost Troumad]$ export LANG=\"fr_FR.ISO-8859-1\"
    [troumad@localhost Troumad]$ locale
    locale: Cannot set LC_CTYPE to default locale: No such file or directory
    locale: Cannot set LC_MESSAGES to default locale: No such file or directory
    locale: Cannot set LC_ALL to default locale: No such file or directory
    LANG=\"fr_FR.ISO-8859-1\"
    LC_CTYPE="\"fr_FR.ISO-8859-1\""
    LC_NUMERIC="\"fr_FR.ISO-8859-1\""
    LC_TIME="\"fr_FR.ISO-8859-1\""
    LC_COLLATE="\"fr_FR.ISO-8859-1\""
    LC_MONETARY="\"fr_FR.ISO-8859-1\""
    LC_MESSAGES="\"fr_FR.ISO-8859-1\""
    LC_PAPER="\"fr_FR.ISO-8859-1\""
    LC_NAME="\"fr_FR.ISO-8859-1\""
    LC_ADDRESS="\"fr_FR.ISO-8859-1\""
    LC_TELEPHONE="\"fr_FR.ISO-8859-1\""
    LC_MEASUREMENT="\"fr_FR.ISO-8859-1\""
    LC_IDENTIFICATION="\"fr_FR.ISO-8859-1\""
    LC_ALL=
    [troumad@localhost Troumad]$ ll /run/media/troumad/9c827cd3-a5ad-4a71-9868-80ea2953fbb6/francais/France\ Gall/il\ jouait\ du\ pianon\ debout/
    total 30600
    -rw-rw-r-- 1 troumad 481     235 Jan 25  2005 1980.m3u
    -rw-rw-r-- 1 troumad 481     195 Jan 25  2005 1980.txt
    -rw-rw-r-- 1 troumad 481 3374238 Mar  7  2005 'b'$'\351''b'$'\351'' comme la vie.ogg'
    -rw-rw-r-- 1 troumad 481 4692598 Mar  7  2005 'il jouait du piano debout.ogg'
    -rw-rw-r-- 1 troumad 481 2657781 Mar  7  2005 'la chanteuse qui a tout donn'$'\351''.ogg'
    -rw-rw-r-- 1 troumad 481 3287942 Mar  7  2005 'la mort douce.ogg'
    -rw-rw-r-- 1 troumad 481 1552126 Mar  7  2005 'les moments o'$'\371'' jaime tout le monde.ogg'
    -rw-rw-r-- 1 troumad 481 4402871 Mar  7  2005 'ma vieille europe.ogg'
    -rw-rw-r-- 1 troumad 481 2780952 Mar  7  2005 'parler parler.ogg'
    -rw-rw-r-- 1 troumad 481 2944279 Mar  7  2005 'plus d'$'\351''t'$'\351''.ogg'
    -rw-rw-r-- 1 troumad 481 2678245 Mar  7  2005 'plus haut.ogg'
    -rw-rw-r-- 1 troumad 481 2945472 Mar  7  2005 'trop grand pour moi.ogg'
    L'affichage est différent de debian à Mageia, mais, je ne vois pas comment faire pour repérer de tels noms et remplacer les à par des a, des é par des e... Parce que à l'origine, c'est eux qui posaient des problèmes.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Membre Expert
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 559
    Par défaut
    Citation Envoyé par troumad Voir le message
    L'affichage est différent de debian à Mageia, mais, je ne vois pas comment faire pour repérer de tels noms et remplacer les à par des a, des é par des e... Parce que à l'origine, c'est eux qui posaient des problèmes.
    Bonsoir,

    Je ne pense pas à priori que ce soit simple de les repérer et de les remplacer (si ce n'est "à la main" pour "réencodage" dans ton nouveau système cf. ci-après). Les fichiers sont de 2005 et probablement encodés en fr_FR.ISO-8859-1, la modification de tes locales dans ce format est incomplète due à ton système cf. ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    locale: Cannot set LC_CTYPE to default locale: No such file or directory
    locale: Cannot set LC_MESSAGES to default locale: No such file or directory
    locale: Cannot set LC_ALL to default locale: No such file or directory
    Voir ci-dessous:
    LC_CTYPE

    Character classification and case conversion.
    https://linux.die.net/man/1/locale


    Une solution serait de vérifier tes systèmes, de les passer en UTF-8 et pour Debian par la case dpkg-reconfigure locales.
    https://www.debian.org/doc/manuals/f...howto/ch3.html

    ... mais ce n'est pas pour autant garanti, il faut aussi "jouer" avec l'affichage de ton terminal (echo $TERM (cf. stty http://www.linux-france.org/article/nation/accents.txt)) et, bien évidemment avec ton clavier si ce n'est déja fait:
    https://wiki.debian.org/fr/Keyboard
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

    Liste des balises BB

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par troumad Voir le message
    L'affichage est différent de debian à Mageia, mais, je ne vois pas comment faire pour repérer de tels noms et remplacer les à par des a, des é par des e... Parce que à l'origine, c'est eux qui posaient des problèmes.
    Et oui, il vaut mieux éviter de mettre des accents dans les noms des fichiers!

    Pour avoir une meilleure idée de l'encodage courant du nom des fichiers, tu peux utiliser 'od':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ls | od -c
    # ou bien, pour voir chaque fichier sur une ligne:
    for file in *; do echo "$file" | od -c; done
    Tu peux aussi utiliser 'file' pour affiner le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for file in *; do\
      rm -f /tmp/myfile
      echo "$file > /tmp/myfile
      echo "$file $(file /tmp/myfile)"
    done
    En fonction du résultat, on peut convertir les noms de fichiers avec 'textutil' et 'tr' (attention: code non testé):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for file in *; do
      newfile=$(echo "$file" | textutil -convert txt -inputencoding iso-8859-1 -encoding utf-8 -stdin -stdout | tr 'àéèêëïîùöôüûç' 'aeeeeiioouuc')
      echo mv "$file" "$newfile"
    done
    Une fois que tu obtiens ce que tu veux, tu enlèves le "echo".

    [EDIT]J'ai retrouvé la commande de conversion que je cherchais (cf. man iconv (from <old> to <new>)):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for file in *; do
      newfile=$(echo "$file" | iconv -f ISO-8859-1 -t UTF-8 | tr 'àéèêëïîùöôüûç' 'aeeeeiioouuc')
      echo mv "$file" "$newfile"
    done

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    Je reposte donc une nouvelle réponse, mon dernier message ne respectant les règles...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    #!/bin/bash
     
    ### Variables ###
     
    VERSION="v0.05.$(uname -n)"
     
    # Couleurs du texte affiché dans le shell
    FUSHIA="\033[1;35m"
    NOIR="\033[1;0m"
    BLEU="\033[1;34m"
    VERT="\033[1;32m"
    ROUGE="\033[1;31m"
     
    # Liste des encodages les plus courants
    CODES_LIST="iso-8859-2 iso-8859-3 iso-8859-4 iso-8859-5 iso-8859-6 iso-8859-7 iso-8859-8 iso-8859-9 iso-8859-10 iso-8859-11 iso-8859-13 iso-8859-14 iso-8859-15 iso-8859-16 cp437 cp737 cp775 cp850 cp852 cp855 cp856 cp857 cp860 cp861 cp862 cp863 cp864 cp865 cp866 cp869 cp874 cp932 cp936 cp949 cp950 cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 iso-8859-1" 
     
    ### Introduction ###
     
    echo -e "
    ----------------------------------------------------------
     ${BLEU}Ce script permet de lancer en boucle l'utilitaire convmv qui 
     permet de convertir les noms de fichiers codés en autre chose 
     que UTF-8 vers UTF-8. Relancer le script avec l'argument
     ALLCODES si jamais aucun résultat n'a été trouvé.
     
     Ex: 
     sh convmv-to-utf-8.sh /opt/ ALLCODES
     
     ${FUSHIA}V${NOIR}ersion ${VERSION}${NOIR}
    ----------------------------------------------------------"
     
    # Détermination du répertoire à analyser
     
    if [[ "${1}" == "" ]]
    	then
    	 	# On détermine le répertoire courant
    	 	echo -e " ${ROUGE}V${NOIR}ous êtes sur le point d'analyser ce répertoire : \n -->${ROUGE} $(pwd)${NOIR}"
    	else
    		# On contrôle si le répertoire demandé existe
    		if [ -d ${1} ]
    		 	then
    					# On se place dans le répertoire		 			
    		 			cd ${1}
    					echo -e " ${ROUGE}V${NOIR}ous êtes sur le point d'analyser ce répertoire : \n -->${ROUGE} $(pwd)${NOIR}"
    			else
    					# Le répertoire n'existe pas, on arrête le script
    					echo -e " ${ROUGE}L${NOIR}e répertoire que vous avez demandé à analyser n'existe pas."
    					exit
    		fi
    fi
     
    # Vérification de l'existence de convmv
    if [[ -z $(dpkg -l | egrep "^ii  convmv") ]]
    	then
    		# Propose l'installation direct du logiciel
    		echo -e " ${ROUGE}L${NOIR}e logiciel convmv n'est pas installé et il est nécessaire au bon fonctionnement de ce script, voulez-vous l'installer ? [${ROUGE}O${NOIR}]ui [${ROUGE}N${NOIR}]on"
    	   read -p " --> " confirmation_installation
          # Vérifier le choix de l'installation du logiciel
    		if [[ ${confirmation_installation} == [OoYy]* ]]
        		then
        				sudo apt-get -y --force-yes install convmv
            			echo "----------------------------------------------------------"
    		   else
    		   		echo -e " ${ROUGE}V${NOIR}ous n'avez pas souhaité d'installer automatiquement 'convmv'. Ce logiciel est nécessaire au bon fonctionnement du script."
    					exit
        	fi
    fi
     
    # Pour boucler sur tous les codepages supportés par convmv, il faut mettre ALLCODES en argument
    if [[ "${2}" = "ALLCODES" ]]
    	then
        	# Affecte tous les codages connus de convmv à la variable CODES_LIST
        	CODES_LIST=$(convmv --list | tr '\n' ' ')
        	echo -e "(${ROUGE}L${NOIR}a liste complète des encodages disponibles dans convmv va être utilisée) : \n -->${ROUGE} ${CODES_LIST}"
    	else
    		echo -e "(${ROUGE}L${NOIR}a liste simplifiée des encodages disponibles va être utilisée) : \n -->${ROUGE} ${CODES_LIST}"
    fi
     
     
    # Demande de l'utilisation d'une analyse récursive
    echo -e "
     ${ROUGE}V${NOIR}oulez-vous aussi analyser les sous-répertoires ? [${ROUGE}O${NOIR}]ui [${ROUGE}N${NOIR}]on [${ROUGE}A${NOIR}]rrêter :"
    read -p " --> " RECURSIVITE
     
    if [[ ${RECURSIVITE} == [Aa]* ]]
    	then
       	 echo -e "\n ${ROUGE}A${NOIR}rrêt demandé.${NOIR}"
       	 exit
     
    	elif [[ ${RECURSIVITE} == [Oo]* ]]
    	then
    	 echo -e " \n -->${ROUGE} Les sous-répertoires seront analysés."
        OPTION_R="-r"
    fi
     
     
     
    ### Boucle principale ###
     
    for CODAGE in ${CODES_LIST}
    do
        echo -e "\n${BLEU}Hypothèse du codage : ${FUSHIA}${CODAGE}${NOIR}"
     
        # Recherche des fichiers n’étant pas en UTF-8
        LISTE_FICHIER=$(convmv -f ${CODAGE} -t utf-8 ${OPTION_R} * 2>&1 | egrep "^mv ")
     
        # Vérifie qu'il y ait bien des fichiers à renommer
        if [[ -z ${LISTE_FICHIER} ]]
        then
            echo -e "\n${ROUGE}Aucune erreur detectée dans les caractères utilisés dans le nom des fichiers.${NOIR}\n"
            exit
     
        else
            # Nombre de fichier à renommer
            NOMBRE_FICHIERS=$(echo "${LISTE_FICHIER}" | wc -l)
            echo -e "\n${FUSHIA}${NOMBRE_FICHIERS}${NOIR} fichiers à convertir."
        fi
     
        for ((i=1; i<=${NOMBRE_FICHIERS}; i++))
        do
            LIGNE=$(sed -n ${i}p <<< "${LISTE_FICHIER}")
     
            # Récupération du nom corrompu
            ANCIEN_NOM=$(cut -f2 -d '"' <<< "${LIGNE}")
     
            # Récupération du nom corrigé
            NOUVEAU_NOM=$(cut -f4 -d '"' <<< "${LIGNE}")
     
            echo -n -e "\n${VERT}Conversion de ${NOIR}"
     
            for (( x=0 ; x <= ${#ANCIEN_NOM} ; x++ ))
            do
                LETTRE_ORIGINALE=${ANCIEN_NOM:${x}:1}
                LETTRE_CORRIGEE=${NOUVEAU_NOM:${x}:1}
     
                # Comparaison des caractères entre eux
                if [[ "${LETTRE_ORIGINALE}" == "${LETTRE_CORRIGEE}" ]]
                then
                    echo -n -e "${LETTRE_ORIGINALE}"
                else
                    echo -n -e "${BLEU}${LETTRE_ORIGINALE}${NOIR}"
                fi
            done
     
            echo -n -e "${VERT} en ${NOIR}"
     
            for (( x=0 ; x <= ${#ANCIEN_NOM} ; x++ ))
            do
                LETTRE_ORIGINALE=${ANCIEN_NOM:${x}:1}
                LETTRE_CORRIGEE=${NOUVEAU_NOM:${x}:1}
     
                # Comparaison des caractères entre eux
                if [[ "${LETTRE_ORIGINALE}" == "${LETTRE_CORRIGEE}" ]]
                then
                    echo -n -e "${LETTRE_CORRIGEE}"
                else
                    echo -n -e "${FUSHIA}${LETTRE_CORRIGEE}${NOIR}"
                fi
            done
     
        done
     
        # Demande de confirmation du codage à utiliser
        echo -e "\n${FUSHIA}${NOMBRE_FICHIERS}${NOIR} fichiers à convertir."
     
     
    echo -e "
     ${ROUGE}C${NOIR}e codage est-il le bon ? ? [${ROUGE}O${NOIR}]ui [${ROUGE}N${NOIR}]on [${ROUGE}A${NOIR}]rrêter :"
    read -p " --> " BON_CODAGE
     
        if [[ ${BON_CODAGE} == [Aa]* ]]
        then
            echo -e "\n${ROUGE}Arrêt du script.${NOIR}\n"
            exit
     
        elif [[ ${BON_CODAGE} == [OoYy]* ]]
        then
            convmv -f ${CODAGE} -t utf-8 ${OPTION_R} * --notest &>/dev/null
     
            # Vérification de l’absence de fichier corrompu
            if [[ -z $(convmv -f ${CODAGE} -t utf-8 ${OPTION_R} * 2>&1 | egrep "^mv ") ]]
            then
                echo -e "\n${BLEU}Tous les fichiers ont été renommés.${NOIR}\n"
                exit
     
            else
                echo -e "\n${ROUGE}Tous les fichiers n'ont pas été renommés.${NOIR}\n"
                exit
            fi
        fi
     
        # Mise au propre du terminal
        clear
    done
    C'est un vieux code mais qui fonctionne encore, il permet de faire du gros renommage de masse avec correction des caractères.

    N’hésite pas à utiliser l'argument ALLCODES.

    Nom : convmv-for-utf-8-hizoka_iso-8859-1.png
Affichages : 3455
Taille : 115,1 Ko
    Nom : convmv-for-utf-8-hizoka_cp437.png
Affichages : 3608
Taille : 91,9 Ko

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Merci pour tous vos apports. J'espère avoir le temps de regarder demain. Pour ce qui est de l'encodage... Les noms ont été générés automatiquement par grip : le nom de la chanson.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par hizoka Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/bash
    # Source code de convmv-to-utf-8.sh
    C'est un vieux code mais qui fonctionne encore, il permet de faire du gros renommage de masse avec correction des caractères.
    À noter que ce script nécessite "dpkg" pour installer l'outil "convmv" sur lequel il repose.

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Pour déterminer manuellement l'encodage d'une chaine, on peut se servir de ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ LANG=fr_FR.UTF-8
     
    $ echo 'é' | od -bc
    0000000   303 251 012
               é  **  \n
     
    $ echo 'é' | iconv -f UTF-8 -t ISO_8859-1 | od -bc
    0000000   351 012
             351  \n
    CONCLUSION:
    En unicode (utf-8), le 'e-acute' (é) est codé sur 2 bytes \303 \251 (en octal)
    En iso-8859-1 (latin-1), le 'e-acute' (é) est codé sur un byte \351 (en octal)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ LANG=fr_FR.UTF-8
     
    $ echo 'é' | iconv -f ISO_8859-1 -t UTF-8
    é
     
    $ echo 'é' | iconv -f ISO_8859-1 -t UTF-8 | od -bc
    0000000   303 203 302 251 012
               Ã  **   ©  **  \n
    CONCLUSION:
    Si on voit 'é' (A-majuscule-tilde Copyright) dans un mot où, "manifestement", on devrait avoir un 'é', c'est que:
    - le système d'interprétation courant est ISO_8859-1
    - la chaîne contient 2 bytes '\303 \251'
    - la chaine est codée en UTF-8
    - la chaine est interprétée et affichée comme si c'étaient 2 caractères ISO_8859-1
    - la chaine doit être convertie dans l'autre sens (-f UTF-8 -t ISO_8859-1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo "é" | iconv -f UTF-8 -t ISO_8859-1
    é

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/11/2015, 09h21
  2. CRM V4 : masquer les attributs non utilisés dans les recherches avancée
    Par Marie40200 dans le forum Microsoft Dynamics CRM
    Réponses: 0
    Dernier message: 27/02/2014, 10h02
  3. Réponses: 8
    Dernier message: 31/03/2013, 20h28
  4. Réponses: 2
    Dernier message: 18/04/2012, 09h56
  5. Réponses: 4
    Dernier message: 09/04/2009, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo