J'ai un tas de répertoires et sous-répertoires qui contiennent des fichiers avec des caractères spéciaux, comme ce fichier:
robbie@phil:~$ ls test�sktest.txt
test?sktest.txt
Find révèle une séquence d'échappement:
robbie@phil:~$ find test�sktest.txt -ls
424512 4000 -rwxr--r-x 1 robbie robbie 4091743 Jan 26 00:34 test\323sktest.txt
La seule raison pour laquelle je peux même taper leurs noms sur la console est à cause de la complétion des onglets. Cela signifie également que je peux les renommer manuellement (et supprimer le caractère spécial).
J'ai mis LC_ALL sur UTF-8, ce qui ne semble pas aider (pas non plus sur un nouveau shell):
robbie@phil:~$ echo $LC_ALL
en_US.UTF-8
Je me connecte à la machine en utilisant ssh depuis mon mac. C'est une installation Ubuntu:
robbie@phil:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=7.10
DISTRIB_CODENAME=gutsy
DISTRIB_DESCRIPTION="Ubuntu 7.10"
Shell est Bash, TERM est défini sur xterm-color.
Ces fichiers existent depuis un certain temps et n'ont pas été créés à l'aide de cette installation d'Ubuntu. Je ne sais donc pas quels étaient les paramètres d'encodage du système.
J'ai essayé des choses dans le sens de:
find . -type f -ls | sed 's/[^a-zA-Z0-9]//g'
Mais je ne trouve pas de solution qui fasse tout ce que je veux:
- Identifiez tous les fichiers qui ont des caractères non affichables (ce qui précède ignore beaucoup trop)
- Pour tous ces fichiers dans une arborescence de répertoires (récursivement), exécutez mv oldname newname
- En option, la possibilité de translittérer des caractères spéciaux tels que ä en a (non requis, mais serait génial)
OU
- Afficher correctement tous ces fichiers (et aucune erreur dans les applications lors de la tentative d'ouverture)
J'ai des morceaux, comme itérer sur tous les fichiers et les déplacer, mais identifier les fichiers et les formater correctement pour la commande mv semble être la partie difficile.
Toute information supplémentaire expliquant pourquoi ils ne s'affichent pas correctement ou comment "deviner" le codage correct est également la bienvenue. (J'ai essayé convmv mais il ne semble pas faire exactement ce que je veux: http://j3e.de/linux/convmv/ )