Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/06/2017, à 14:30

jeteztout

Correction encodage par script

Bonjour,

j'ai trouvé ce script pour corriger l'encodage de mes noms de fichier. Mais il est interactif et me demande pour chaque fichier. J'en ai des milliers, donc je voudrais que tout soit automatique et qu'il ne me demande pas de choisir l'encodage et réencode tout directement en windows-1252 :

#!/bin/bash

# list of encodings to try. (max 10)
enc=( windows-1252 )

while IFS= read -rd '' file <&3; do
    base=${file##*/} dir=${file%/*}

    # if converting from utf8 to utf8 succeeds, we'll assume the filename is ok.
    iconv -f utf8 <<< "$base" >/dev/null 2>&1 && continue

    # display the filename converted from each enc to utf8
    printf 'In %s:\n' "$dir/"
    for i in "${!enc[@]}"; do
        name=$(iconv -f "${enc[i]}" <<< "$base")
        printf '%2d - %-12s: %s\n' "$i" "${enc[i]}" "$name"
    done
    printf ' s - Skip\n'

    while true; do
        read -p "? " -n1 ans
        printf '\n'
        if [[ $ans = [0-9] && ${enc[ans]} ]]; then
            name=$(iconv -f "${enc[ans]}" <<< "$base")
            mv -iv "$file" "$dir/$name"
            break
        elif [[ $ans = [Ss] ]]; then
            break
        fi
    done
done 3< <(LC_ALL=C find . -depth -name "*[![:print:][:space:]]*" -print0)

Quelqu'un peut-il m'aider ? Merci !

Hors ligne

#2 Le 02/06/2017, à 19:49

LeoMajor

Re : Correction encodage par script

bonjour,

il y a detox, qui nettoie les noms de fichiers, et en plus récursivement

touch "[(1996-été?)Père Noël \$200:@ù].mp3"
ls .
[(1996-été?)Père Noël $200:@ù].mp3 

detox -s lower8 "[(1996-été?)Père Noël \$200:@ù].mp3"
ls .
1996-ete-pere_noel_200_u-.mp3

j'ai juste ajouté

/etc/detoxrc
...
#add_lower8
sequence "lower8" {
        utf_8;
        safe;
        lower;
        wipeup;
};
...

Hors ligne

#3 Le 02/06/2017, à 20:01

jeteztout

Re : Correction encodage par script

Bonjour,

il semble nettoyer en "supprimant" les accents, en remplaçant les espaces par des _, etc. Je me demande si c'est vraiment une bonne solution. Les utilisateurs vont continuer à ajouter des accents dans les noms de fichier ou a à renommer les anciens, donc que se passera-t'il si le charset du nom de fichier n'a pas été changé ?

Hors ligne