Parfois, j'ai besoin de rechercher des fichiers avec des caractères accentués (diacritique en général), généralement avec Locate / mlocate. Je souhaite configurer (peut-être en /etc/updatedb.conf
) afin qu'il me permette de rechercher ces caractères spéciaux en utilisant un certain mappage de langue, par exemple:
a == âàáäÂÀÂÄ
e == êèéëÊÈÉË
i == îïíÎÏ
o == ôöóÔÖ
u == ûùüÛÜÙ
c == çÇ
n == ñ
Donc locate -i liberación
également rechercher des fichiers avec chaîne Liberación et même Liberación .
Notes et hypothèses
- Et peut-être d'autres: ÂÃÄÀÁÅÆ ÇÈÉÊËÌÍÎÏ ÐÑÒÓÔÕÖØÙÚÛÜÝÞ ßàáâãäåæç èéêëìíîïðñòóôõö øùúûüýþÿ .
- Il s'agit d'une situation courante sur les langues romanes comme l'espagnol, le français et l'allemand.
- J'utilise toujours une locale 100% UTF-8.
- Je préfère ne pas avoir à utiliser d'expressions régulières.
- Un patch peut utiliser des translittérations ASCII d'Unicode comme le fait Unidecode / cUnidecode . La plupart de mlocate est écrit sur C.
en relation
- Question similaire mais en utilisant
find
- Miloslav Trmač (
mlocate
développeur) dit ici que le code source officiel est sur pagure.io (et un fork sur Github ). - Je dépose un problème sur mlocate repo sur Pagure.io pour ajouter cette fonctionnalité.
- Mise à jour 2018-02 : cela peut être corrigé avec cette demande de pull par marcotrevisan . Ajoutera un
-t
/--transliterate
support en utilisanticonv
pour correspondre à accentué. - Mise à jour 2018-03 :
mlocate
avec le support de--transliterate
est désormais inclus dans Ubuntu 18.04 LTS Bionic Beaver ( v2 et v3.1 ).
- Mise à jour 2018-02 : cela peut être corrigé avec cette demande de pull par marcotrevisan . Ajoutera un
la source
grep -f
oufgrep
pour éviter l'interprétation de"$CH"
comme un caractère spécial, par exemplegrep ^
correspondrait à n'importe quelle ligne maisgrep -f ^
ne correspond qu'à celles qui contiennent le caractère^
. Il peut également être plus facile d'utiliser des classes de caractères pour créer l'expression régulière, c'estREG="[$CHARS]"
-à- dire qu'il est probablement plus facile que votresed
commande. Attention aux caractères spéciaux! Sinon, une bonne approche. +1Maintenant, avec mlocate 0.26, nous avons une
-t --transliterate
option (voir la page de manuel ) sur Ubuntu 18.04+ (sans avoir besoin de solutions de contournement):Création de fichiers de test:
Mise à jour et recherche:
Alors maintenant,
locate -t liberación
recherchez également des fichiers avec chaîneliberacion
et mêmeliberaciòn
!Enfin, créer un alias sur mon .bashrc :-)
la source