====== 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 -t >
$ iconv -f ISO-8859-1 -t UTF-8 entree.txt > sortie.txt
En laissant le logicile deviner l'encodage d'orginie
$ recode
$ 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 [[https://www.freebsd.org/cgi/man.cgi?query=dos2unix&manpath=SuSE+Linux/i386+11.3|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 -t
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 plus((Comme enlever les espaces.)). 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