Comment changer l’encodage dans de nombreux fichiers?

J’essaye ceci:

find . -exec iconv -f iso8859-2 -t utf-8 {} \; 

mais la sortie va à l’écran, pas au même fichier. Comment faire?

Essaye ça:

 find . -type f -print -exec iconv -f iso8859-2 -t utf-8 -o {}.converted {} \; -exec mv {}.converted {} \; 

Il utilisera le fichier temporaire avec le suffixe ‘.converted’ (extension) et le déplacera ensuite vers le nom d’origine, alors faites attention si vous avez des fichiers avec des suffixes ‘.converted’ (je ne pense pas que vous en ayez).

De plus, ce script n’est pas sûr pour les noms de fichiers contenant des espaces, donc pour plus de sécurité, vous devez double-citer: “{}” au lieu de {} et “{} .converted” au lieu de {} .converted

lire sur enconv .
Si vous devez convertir votre terminal actuel en encodage, vous pouvez le faire comme ceci:

 find . -exec enconv -L czech {}\; 

Ou exactement ce que tu voulais:

 find . -exec enconv -L czech -x utf8 {}\; 

J’ai trouvé que cette méthode fonctionnait bien pour moi, en particulier lorsque j’avais plusieurs encodages de fichiers et plusieurs extensions de fichiers.

Créez un script vim appelé script.vim:

 set bomb set fileencoding=utf-8 wq 

Ensuite, exécutez le script sur les extensions de fichiers que vous souhaitez cibler:

 find . -type f \( -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.css" -o -iname "*.less" -o -iname "*.js" \) -exec vim -S script.vim {} \; 

Personne n’a proposé un moyen de détecter automatiquement l’encodage et le recodage.

Voici un exemple pour recoder en UTF-8 tous les fichiers HTM / HTML de la twig principale d’un GIT.

git ls-tree master -r --name-only | grep htm | xargs -n1 -I{} bash -c 'recode "$(file -b --mime-encoding {})..utf-8" {}'