Đôi khi tôi cần tìm kiếm các tệp có ký tự có dấu (nói chung là dấu phụ), thường là với định vị / mlocate. Tôi muốn thiết lập (có thể trong /etc/updatedb.conf) để nó cho phép tôi tìm kiếm các ký tự đặc biệt này bằng cách sử dụng ánh xạ ngôn ngữ nhất định, ví dụ:
a == âàáäÂÀÂÄ
e == êèéëÊÈÉË
i == îïíÎÏ
o == ôöóÔÖ
u == ûùüÛÜÙ
c == çÇ
n == ñ
Vì vậy, locate -i liberacióncũng tìm kiếm các tập tin với chuỗi tự do và thậm chí cả Liberaciòn .
Ghi chú và giả định
- Và có lẽ những người khác: ÂÃÄÀÁÅÆ ÇÈÉÊËÌÍÎÏ ÐÑÒÓÔÕÖØÙÚÛÜÝÞ ßàáâãäåæç èéêëìíîïðñòóôõö øùúûüýþÿ .
- Đây là một tình huống phổ biến trên các ngôn ngữ lãng mạn như Tây Ban Nha, Pháp và Đức.
- Tôi luôn sử dụng ngôn ngữ 100% UTF-8.
- Tôi thà không phải sử dụng các biểu thức thông thường.
- Một bản vá có thể sử dụng phiên âm ASCII của Unicode như Unidecode / cUnidecode . Hầu hết các mlocate được viết trên C.
Liên quan
- Câu hỏi tương tự nhưng sử dụng
find - Miloslav Trmač (
mlocatenhà phát triển) nói ở đây rằng mã nguồn chính thức là trên pagure.io (và một ngã ba trên Github ). - Tôi gửi một vấn đề về mlocate repo tại Pagure.io để thêm tính năng này.
- Cập nhật 2018-02 : Điều này có thể được khắc phục với yêu cầu kéo này của marcotrevisan . Sẽ thêm một
-t/--transliteratehỗ trợ sử dụngiconvđể phù hợp với dấu có dấu. - Cập nhật 2018-03 :
mlocatevới sự hỗ trợ--transliteratehiện đã được bao gồm trong Ubuntu 18.04 LTS Bionic Beaver ( v2 và v3.1 ).
- Cập nhật 2018-02 : Điều này có thể được khắc phục với yêu cầu kéo này của marcotrevisan . Sẽ thêm một
grep -fhoặcfgrepđể tránh việc giải thích"$CH"như một ký tự đặc biệt, ví dụ nhưgrep ^sẽ khớp với bất kỳ dòng nào nhưnggrep -f ^chỉ khớp với các ký tự có chứa ký tự đó^. Cũng có thể dễ dàng hơn khi sử dụng các lớp ký tự để tạo biểu thức chính quy, nghĩaREG="[$CHARS]"là có thể dễ hơnsedlệnh của bạn . Xem ra cho các nhân vật đặc biệt mặc dù! Nếu không thì một cách tiếp cận tốt. +1