Đô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ón
cũ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č (
mlocate
nhà 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
/--transliterate
hỗ trợ sử dụngiconv
để phù hợp với dấu có dấu. - Cập nhật 2018-03 :
mlocate
với sự hỗ trợ--transliterate
hiệ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 -f
hoặ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ơnsed
lệ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