Installation d'Utrac, Universal Text Recognizer and Converter

Pour commencer, rendez-vous sur le site d'Utrac pour le télécharger et l'installer (make puis make install en root).

Les noms de fichiers

Pour les noms de fichiers, créez ce script :

for I in `ls -A`
do
 nom=`basename $I`
 nnom=`echo $nom | utrac`       # Convertir en UTF8
 if [ "$nom" != "$nnom" ]       # Renomme seulement si nécessaire
 then
   mv $nom $nnom
 fi
 if test -d "$nnom"             # Si c'est un répertoire, on descend
 then
   cd $nnom
   latin2utf
   cd ..
 fi
done

Noms de fichiers et leur contenu

Si on veut convertir aussi le contenu des fichiers :

for I in `ls -A`
do
 nom=`basename $I`
 nnom=`echo $nom | utrac`        # Convertir en UTF8
 if [ "$nom" != "$nnom" ]        # Renomme seulement si nécessaire
 then
   mv $nom $nnom
 fi
 if test -d "$nnom"              # Si c'est un répertoire, on descend
 then
   cd $nnom
   latin2utf-contenu
   cd ..
 fi
 if [ -f "$nnom" ]                     # Si c'est un fichier, on convertit...
 then
   test=`utrac kiné >/dev/null 2>/dev/null ; echo $?`
   if [ $test = "0" ]                  # ...si utrac peut convertir
   then
     utrac $nnom > tampon
     mv tampon $nnom
     rm tampon
   fi
 fi
done

Pour quelques fichiers ça ne marche pas, j'utilise alors recode :
% recode latin9..utf8 <fichier>

Casse et capitalisation

Tant qu'on y est, voilà un script qui capitalise des les noms de fichiers, passe les répertoires en minuscules et définit des droits corrects pour les fichiers.

#!/bin/bash
for I in `ls -A`
do
 if test -d "$I"                       # Si c'est un répertoire, on descend
 then
   chmod 755 $I
   cd $I
   casse
   pwd
   cd ..
   nom=`basename $I`                   # On passe en minuscules
   nnom=`echo $I | tr 'A-Z' 'a-z'`
   if [ "$nom" != "$nnom" ]            # Renomme seulement si nécessaire
   then
     mv $nom $nnom
   fi
 else
   chmod 644 $I
   if file $I |grep executable >/dev/null
   then
     chmod 755 $I
   fi
   nom=`basename $I`                   # On capitalise
   nnom=`echo -n ${I:0:1} |tr 'a-z' 'A-Z' ; echo ${I:1} | tr 'A-Z' 'a-z'`
   if [ "$nom" != "$nnom" ]            # Renomme seulement si nécessaire
   then
     mv $nom $nnom
   fi
 fi
done