L’idée de base : si je crée un fichier parlant de “Émile Brön”, j’ai probablement envie de l’appeler “fichier-pour-emile-bron.pdf” plutôt que “fichier pour Émile Brön.pdf”

Pour supprimer les accents d’une chaîne de caractères

  • Avec GNU Emacs : le paquet unidecode propose des fonctions unidecode et unidecode-sanitize. C’est une version Emacs du paquet Python ci-dessous.
emacs --batch -f package-initialize -l unidecode --eval '(princ (unidecode "Fichier pour Émile Brön.pdf"))' 2>/dev/null

(Notons que la variante avec unidecode-sanitize donnerait fichier-pour-emile-bronpdf.)

unidecode <<<"Fichier pour Émile Brön.pdf"
  • Avec konwert : c’est un programme CLI de conversion. Par exemple:
konwert UTF8-ascii<<<"fichier pour Émile Brön.pdf"
  • Avec iconv : programme CLI bien connu, qui connait des filtres. Par exemple:
iconv -t ascii//TRANSLIT <<<"fichier pour Émile Brön.pdf"

Source pour certaines solutions: https://unix.stackexchange.com/questions/171832/converting-a-utf-8-file-to-ascii-best-effort

Pour passer en bas de casse et placer des tirets

Après la première étape, on se retrouve avec la chaîne Fichier pour Emile Bron.pdf. Reste à normaliser tout ça.

<<<"Fichier pour Emile Bron.pdf" tr [:upper:] [:lower:] | tr -c "[:alnum:]\n." "-"

Le second tr transforme en tiret tout ce qui n’est pas une lettre, un nombre, un point ou un retour à la ligne. Le retour à la ligne tout simplement parce que <<<"whatever" cat affiche un retour à la ligne final.

Pour assainir des noms de fichiers existants

Le programme detox permet de renommer automatiquement des fichiers. Il s’installe via APT. Un appel tel que detox * renommera tous les fichiers du répertoire courant.