A volte ho bisogno di cercare file con caratteri accentati (diacritici in generale), di solito con Locate / Mlocate. Vorrei impostare (forse in /etc/updatedb.conf
) in modo che mi permetta di cercare questi caratteri speciali utilizzando una determinata mappatura della lingua, ad esempio:
a == âàáäÂÀÂÄ
e == êèéëÊÈÉË
i == îïíÎÏ
o == ôöóÔÖ
u == ûùüÛÜÙ
c == çÇ
n == ñ
Quindi locate -i liberación
cerca anche i file con stringa liberacion e persino liberaciòn .
Note e ipotesi
- E forse altri: Â ÄÀÁÅÆ ÇÈÉÊËÌÍÎÏ ÐÑÒÓÔÕÖØÙÚÛÜÝÞ ßàáâãäåæç èéêëìíîïðñòóôõö øùúûüýþÿ .
- Questa è una situazione comune nelle lingue romanze come lo spagnolo, il francese e il tedesco.
- Uso sempre una localizzazione 100% UTF-8.
- Preferirei non usare espressioni regolari.
- Una patch potrebbe usare traslitterazioni ASCII di Unicode come fa Unidecode / cUnidecode . La maggior parte di mlocate è scritta su C.
Relazionato
- Domanda simile ma usando
find
- Miloslav Trmač (
mlocate
sviluppatore) afferma qui che il codice sorgente ufficiale è su pagure.io (e un fork su Github ). - Ho aggiunto un problema al repository mlocate su Pagure.io per aggiungere questa funzione.
- Aggiornamento 2018-02 : questo può essere risolto con questa richiesta pull di marcotrevisan . Aggiungerà un
-t
/--transliterate
supporto usandoiconv
per abbinare accentato. - Aggiornamento 2018-03 :
mlocate
con supporto per--transliterate
è ora incluso in Ubuntu 18.04 LTS Bionic Beaver ( v2 e v3.1 ).
- Aggiornamento 2018-02 : questo può essere risolto con questa richiesta pull di marcotrevisan . Aggiungerà un
grep -f
ofgrep
per evitare l'interpretazione di"$CH"
come un carattere speciale, ad esempiogrep ^
corrisponderebbe a qualsiasi riga magrep -f ^
corrisponde solo a quelli che contengono il carattere^
. Può anche essere più facile usare le classi di caratteri per creare l'espressione regolare, cioèREG="[$CHARS]"
è probabilmente più facile del tuosed
comando. Fai attenzione ai personaggi speciali! Altrimenti un buon approccio. +1