Kadang-kadang saya perlu mencari file dengan karakter beraksen (diakritik secara umum), biasanya dengan loc / mlocate. Saya ingin mengatur (mungkin dalam /etc/updatedb.conf
) sehingga saya dapat mencari karakter khusus ini menggunakan pemetaan bahasa tertentu, misalnya:
a == âàáäÂÀÂÄ
e == êèéëÊÈÉË
i == îïíÎÏ
o == ôöóÔÖ
u == ûùüÛÜÙ
c == çÇ
n == ñ
Begitu locate -i liberación
juga mencari file dengan string liberacion dan bahkan liberaciòn .
Catatan dan asumsi
- Dan mungkin yang lainnya: ÃÄÀÁÅÆ ÇÈÉÊËÌÍÎÏ ÐÑÒÓÔÕÖØÙÚÛÜÝÞ ßàáâãäåæç èéêëìíîïðñòóôõö øùúûüýþÿ .
- Ini adalah situasi umum pada bahasa romansa seperti Spanyol, Prancis dan Jerman.
- Saya selalu menggunakan lokal 100% UTF-8.
- Saya lebih suka tidak harus menggunakan ekspresi reguler.
- Suatu tambalan mungkin menggunakan transliterasi ASCII dari Unicode seperti halnya Unidecode / cUnidecode . Sebagian besar mlocate ditulis dalam C.
Terkait
- Pertanyaan serupa tetapi menggunakan
find
- Miloslav Trmač (
mlocate
pengembang) mengatakan di sini bahwa kode sumber resmi ada di pagure.io (dan garpu di Github ). - Saya mengajukan masalah pada mlocate repo di Pagure.io untuk menambahkan fitur ini.
- Pembaruan 2018-02 : Ini dapat diperbaiki dengan permintaan tarik ini oleh marcotrevisan . Akan menambahkan
-t
/--transliterate
mendukung gunakaniconv
untuk mencocokkan aksen. - Pembaruan 2018-03 :
mlocate
dengan dukungan untuk--transliterate
sekarang termasuk dalam Ubuntu 18.04 LTS Bionic Beaver ( v2 dan v3.1 ).
- Pembaruan 2018-02 : Ini dapat diperbaiki dengan permintaan tarik ini oleh marcotrevisan . Akan menambahkan
grep -f
ataufgrep
untuk menghindari interpretasi"$CH"
sebagai karakter khusus, mis.grep ^
Akan cocok dengan baris apa pun tetapigrep -f ^
hanya cocok dengan yang mengandung karakter^
. Mungkin juga lebih mudah menggunakan kelas karakter untuk membuat ekspresi reguler, yaituREG="[$CHARS]"
mungkin lebih mudah daripadased
perintah Anda . Hati-hati dengan karakter khusus! Kalau tidak, pendekatan yang baik. +1