Se dermos uma olhada em updatedb.conf(5)
, descobriremos que não há muito que possamos fazer com itens de configuração.
Então, vamos escrever um script usando locate
; No final, podemos executar algo como my-locate.sh liberacion
ou my-locate.sh liberâciòn
e isso nos traz todas as combinações possíveis.
Vamos começar
Primeiro, crie um arquivo simples como nosso banco de dados em qualquer lugar que você queira, por exemplo: ~/.mydb
; em seguida, adicione seus caracteres de acentuação nesse arquivo assim:
aâàáäÂÀÂÄ
eêèéëÊÈÉË
iîïíÎÏ
uûùüÛÜÙ
cçÇ
oôöóÔÖóòòò
...
...
Então, precisamos de um pequeno script que faça o trabalho por nós, escrevi um simples:
#!/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$"
Agora salve-o em algum lugar em seu PATH com um nome desejado, por exemplo: em ~/bin
. Já deve estar no seu ambiente PATH.
Afinal, basta usar algo assim para pesquisar todas as combinações possíveis.
my-locate.sh liberacion
Encontrar-me-ei tudo isto:
~/lab/liberacion
~/lab/liberaciòn
~/lab/liberación
~/lab/liberâciòn
~/lab/liberäciòn
~/lab/libÈrâciòn