Czasami muszę wyszukiwać pliki ze znakami akcentowanymi (ogólnie diakrytycznymi), zwykle za pomocą locate / mlocate. Chcę skonfigurować (być może /etc/updatedb.conf), aby pozwoliła mi wyszukiwać znaki specjalne przy użyciu określonego odwzorowania języka, na przykład:
a == âàáäÂÀÂÄ
e == êèéëÊÈÉË
i == îïíÎÏ
o == ôöóÔÖ
u == ûùüÛÜÙ
c == çÇ
n == ñ
Tak locate -i liberaciónteż wyszukać pliki z ciągiem Liberación a nawet Liberación .
Uwagi i założenia
- A może inni: ÂÃĘÀÁÅÆ ÇÈÉÊËÌÍÎÏ ÐÑÒÓÔÕÖØ'ÚÛÜÝÞ ßàáâãäåæç èéêëìíîïðñòóôõö øùúûüýþÿ .
- Jest to powszechna sytuacja w przypadku języków romańskich, takich jak hiszpański, francuski i niemiecki.
- Zawsze używam ustawień regionalnych 100% UTF-8.
- Wolałbym nie używać wyrażeń regularnych.
- Łatka może wykorzystywać transliteracje ASCII Unicode, jak robi to Unidecode / cUnidecode . Większość mlocate jest napisana na C.
Związane z
- Podobne pytanie, ale przy użyciu
find - Miloslav Trmač (
mlocateprogramista) powiedział tutaj, że oficjalny kod źródłowy znajduje się na pagure.io (i rozwidlenie na Github ). - Zgłosić problem na mlocate repo na Pagure.io dodać tę funkcję.
- Aktualizacja 2018-02 : Można to naprawić za pomocą tej prośby od marcotrevisan . Dodaje
-t/--transliteratewsparcie za pomocą,iconvaby dopasować akcentowane. - Aktualizacja 2018-03 :
mlocatez obsługą dla--transliteratejest teraz uwzględniona w Ubuntu 18.04 LTS Bionic Beaver ( v2 i v3.1 ).
- Aktualizacja 2018-02 : Można to naprawić za pomocą tej prośby od marcotrevisan . Dodaje
grep -flub,fgrepaby uniknąć interpretacji"$CH"znaku specjalnego, np.grep ^Pasuje do dowolnej linii, alegrep -f ^pasuje tylko do tych, które zawierają znak^. Może być również łatwiej używać klas postaci do tworzenia wyrażeń regularnych, tzn.REG="[$CHARS]"Prawdopodobnie jest łatwiejsze niż twojesedpolecenie. Uważaj jednak na znaki specjalne! W przeciwnym razie dobre podejście. +1