Manchmal muss ich Dateien mit Akzentzeichen (im Allgemeinen diakritisch) durchsuchen, normalerweise mit find / mlocate. Ich möchte (möglicherweise in /etc/updatedb.conf
) einrichten, damit ich mit einer bestimmten Sprachzuordnung nach diesen Sonderzeichen suchen kann, zum Beispiel:
a == âàáäÂÀÂÄ
e == êèéëÊÈÉË
i == îïíÎÏ
o == ôöóÔÖ
u == ûùüÛÜÙ
c == çÇ
n == ñ
locate -i liberación
Suchen Sie also auch nach Dateien mit String Liberacion und sogar Liberaciòn .
Anmerkungen und Annahmen
- Und vielleicht andere: ÂÃÄÀÁÅÆ ÇÈÉÊËÌÍÎÏ ÐÑÒÓÔÕÖØÙÚÛÜÝÞ ßàáâãäåæç èéêëìíîïðñòóôõö øùúûüýþÿ .
- Dies ist eine häufige Situation bei romanischen Sprachen wie Spanisch, Französisch und Deutsch.
- Ich verwende immer ein Gebietsschema 100% UTF-8.
- Ich würde lieber keine regulären Ausdrücke verwenden müssen.
- Ein Patch verwendet möglicherweise ASCII-Transliterationen von Unicode wie Unidecode / cUnidecode . Der größte Teil von mlocate ist auf C geschrieben.
verbunden
- Ähnliche Frage aber mit
find
- Miloslav Trmač (
mlocate
Entwickler) sagt hier, dass der offizielle Quellcode auf pagure.io (und eine Gabelung auf Github ) ist. - Ich habe ein Problem bei mlocate repo auf Pagure.io eingereicht , um diese Funktion hinzuzufügen.
- Update 2018-02 : Dies kann mit dieser Pull-Anfrage von marcotrevisan behoben werden . Fügt eine
-t
/--transliterate
Unterstützung hinzu,iconv
die mit Akzent übereinstimmt. - Update 2018-03 :
mlocate
mit Unterstützung für--transliterate
ist jetzt in Ubuntu 18.04 LTS Bionic Beaver ( v2 und v3.1 ) enthalten.
- Update 2018-02 : Dies kann mit dieser Pull-Anfrage von marcotrevisan behoben werden . Fügt eine
grep -f
oderfgrep
vermeiden"$CH"
, z. B.grep ^
würde jede Zeile übereinstimmen, abergrep -f ^
nur diejenigen, die das Zeichen enthalten^
. Es kann auch einfacher sein, Zeichenklassen zum Erstellen des regulären Ausdrucks zu verwenden, dhREG="[$CHARS]"
wahrscheinlich einfacher als Ihrsed
Befehl. Achten Sie jedoch auf Sonderzeichen! Ansonsten ein guter Ansatz. +1