Table des matières
Convertir un (non de) fichier
Jeu de caractères d'un fichier texte
Identifier le jeu de caractères d'un fichier
$ file -bi [filename]
Convertir un fichier d'un jeu de caractères à un autre
$ iconv -f <from-charset> -t <to-charset> <input-file> > <output-file> $ iconv -f ISO-8859-1 -t UTF-8 entree.txt > sortie.txt
En laissant le logicile deviner l'encodage d'orginie
$ recode <to-charset> <input-file> $ recode UTF-8 mon-fichier.txt
Fin de ligne
Principe
La fin de ligne peut être symbolisée de 3 manières (man:dos2unix) :
- Line Feed, LF, 0x0A, déc 10, standard Unix-like
- Carriage Return, CR, 0x0D, déc 14, standard MacO$ 9
- Carriage Return + Line Feed, CRLF, standard M$-DOS, Windows$
La commande file indique également la manière dont la fin de ligne est symbolisée. Aucune indication signifie que le fichier utilise le format Unix standard.
Convertir les fins de lignes
Le paquetage dos2unix apporte les commandes : dos2unix, unix2dos, mac2unix, unix2mac. Typiquement :
$ dos2unix -n fichier_dos.txt new_unix.txt
Le man de dos2unix explique comment combiner le changement de fin de ligne avec des changement de jeu de caractères.
Convertir le jeu de caractères d'un nom de fichier
$ convmv -f <from-charset> -t <to-charset> <fichier>
Peut s'appliquer à des répertoires entiers.
Nettoyer un nom de répertoire ou de fichiers
Que faire quand on se retrouve avec un fichier (ou répertoire) dont le nom n'est pas reconnu par les commandes usuelles (cp, mv, etc.) ? Ça peut arriver en dézippant une archive zip créée sous Window$, par exemple…
La commande detox fait ça très bien et même plus1). De plus, elle opère récursivement. Ainsi :
$ detox mydir*
nettoiera récursivement le répertoire dont le nom commence par “mydir”
Si le nom de répertoire (fichier) est tellement “pourri” que vous ne parvenez pas à le nommer, on peut utiliser son numéro d'inode que l'on récupère par la commande ls.
$ ls -i // affiche les n° d'inodes $ find . -inum XXXXX -exec detox {} \; // où XXXX est le n° d'inode à nettoyer