====== 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