Este equipo de trabajo ha pasado horas investigando para dar espuestas a tu interrogante, te regalamos la solución así que esperamos que te sea de mucha apoyo.
Solución:
Si echamos un vistazo a updatedb.conf(5)
encontraremos que no hay mucho que podamos hacer con los elementos de configuración.
Así que vamos a escribir un script usando locate
; Al final somos capaces de ejecutar algo como my-locate.sh liberacion
o my-locate.sh liberâciòn
y nos traerá todas las combinaciones posibles.
Empecemos
Primero cree un archivo simple como nuestra base de datos donde quiera que esté, por ejemplo: ~/.mydb
; luego agregue sus caracteres de acentos en ese archivo de esta manera:
aâàáäÂÀÂÄ
eêèéëÊÈÉË
iîïíÎÏ
uûùüÛÜÙ
cçÇ
oôöóÔÖóòòò
...
...
Entonces necesitamos un pequeño script que haga el trabajo por nosotros, escribí uno simple:
#!/bin/bash
# Final search term
STR=""
# Loop throughout all characters of desired string
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$"
Ahora guárdelo en algún lugar de su RUTA con el nombre deseado, por ejemplo: en ~/bin
. Ya debería estar en su entorno PATH.
Después de todo, simplemente use algo como esto para buscar todas las combinaciones posibles.
my-locate.sh liberacion
Encontrará para mí todos estos:
~/lab/liberacion
~/lab/liberaciòn
~/lab/liberación
~/lab/liberâciòn
~/lab/liberäciòn
~/lab/libÈrâciòn
Ahora con mlocate 0.26 tenemos -t --transliterate
opción (consulte la página de manual) en Ubuntu 18.04+ (sin necesidad de soluciones alternativas):
Creando algunos archivos de prueba:
$ touch liberación liberacion liberaciôn
Actualizar y buscar:
$ updatedb
$ locate --transliterate liberacion
/home/pablo/liberacion
/home/pablo/liberación
/home/pablo/liberaciôn
Asi que ahora locate -t liberación
también busque archivos con string liberacion
e incluso liberaciòn
!
Finalmente, creando un alias en mi .bashrc
🙂
$ alias locate="locate --transliterate"
Puntuaciones y reseñas
Al final de todo puedes encontrar las observaciones de otros sys admins, tú igualmente tienes el poder dejar el tuyo si te gusta.