Parfois, j’ai besoin de rechercher des fichiers avec des caractères accentués (diacritiques en général), généralement avec local / mlocate. Je souhaite installer (peut-être dans /etc/updatedb.conf
) afin de me permettre 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 liberacion et même liberaciòn .
find
mlocate
) dit ici que le code source officiel est sur pagure.io (et une fork sur Github ). --transliterate
support -t
/ --transliterate
utilisant iconv
pour correspondre à accentué. mlocate
avec le support de --transliterate
est maintenant inclus dans Ubuntu 18.04 LTS Bionic Beaver ( v2 et v3.1 ). Si nous jetons un coup d’oeil à updatedb.conf(5)
, nous constaterons qu’il n’y a pas grand chose à faire avec les éléments de configuration.
Nous allons donc écrire un script en utilisant une recherche; À la fin, nous pouvons exécuter quelque chose comme my-locate.sh liberacion
ou my-locate.sh liberâciòn
et cela nous apportera toutes les combinaisons possibles.
Commencez par créer un fichier simple comme firebase database où vous le souhaitez, par exemple: ~/.mydb
; puis ajoutez vos caractères d’accents dans ce fichier comme ceci:
aâàáäÂÀÂÄ eêèéëÊÈÉË iîïíÎÏ uûùüÛÜÙ cçÇ oôöóÔÖóòòò ... ...
Ensuite, nous avons besoin d’un petit script qui fait le travail pour nous, j’en ai écrit un simple:
#!/bin/bash # Final search term STR="" # Loop throughout all characters of desired ssortingng for (( i=0; i<${#1}; i++ )); do # Split the string in one char CH="${1:$i:1}" # Find all possible combinations of this char CHARS=$(grep "$CH" ~/.mydb) # Add an "or" operator between characters REG=$(echo "$CHARS" | sed 's/.\{1\}/&\|/g' ) REG="($REG)" # Append all possible combination of this character # to our final search term as an or statement if [ "$REG" == '()' ]; then STR=$STR$CH else STR=$STR$REG fi done # locate it using regex locate --regex "$STR$"
Maintenant, enregistrez-le quelque part dans votre PATH avec le nom souhaité, par exemple: dans ~/bin
. Il devrait être déjà dans votre environnement PATH.
Après tout, utilisez simplement quelque chose comme ceci pour rechercher toutes les combinaisons possibles.
my-locate.sh liberacion
Trouvera pour moi tout ceci:
~/lab/liberacion ~/lab/liberaciòn ~/lab/liberación ~/lab/liberâciòn ~/lab/liberäciòn ~/lab/libÈrâciòn