บางครั้งฉันต้องการค้นหาไฟล์ที่มีอักขระเน้นเสียง (กำกับโดยทั่วไป) โดยปกติแล้วจะมีการค้นหา / mlocate ฉันต้องการตั้งค่า (อาจเป็น/etc/updatedb.conf
) ดังนั้นให้ฉันค้นหาอักขระพิเศษนี้โดยใช้การจับคู่ภาษาที่แน่นอนตัวอย่างเช่น:
a == âàáäÂÀÂÄ
e == êèéëÊÈÉË
i == îïíÎÏ
o == ôöóÔÖ
u == ûùüÛÜÙ
c == çÇ
n == ñ
ดังนั้นlocate -i liberación
ยังค้นหาไฟล์ที่มีสตริงLiberacionและแม้กระทั่งLiberación
หมายเหตุและข้อสมมติฐาน
- และบางทีคนอื่น ๆ : ÂÃÄÀÁÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
- นี่เป็นสถานการณ์ทั่วไปของภาษาโรแมนติกเช่นสเปนฝรั่งเศสและเยอรมัน
- ฉันใช้ locale 100% UTF-8 เสมอ
- ฉันไม่ต้องการใช้นิพจน์ทั่วไป
- แพทช์อาจจะใช้ทับศัพท์ ASCII ของ Unicode เป็นUnidecode / cUnidecodeไม่ mlocate ส่วนใหญ่เขียนไว้ใน C
ที่เกี่ยวข้อง
- คำถามที่คล้ายกัน แต่ใช้
find
- Miloslav Trmač (ผู้
mlocate
พัฒนา) พูดที่นี่ว่าซอร์สโค้ดอย่างเป็นทางการอยู่ใน pagure.io (และfork on Github ) - ฉันยื่นปัญหาเกี่ยวกับ mlocate repo ที่ Pagure.ioเพื่อเพิ่มคุณสมบัตินี้
- ปรับปรุง 2018-02 : นี้สามารถแก้ไขด้วยการร้องขอดึงนี้โดยmarcotrevisan จะเพิ่ม
-t
/--transliterate
สนับสนุนโดยใช้iconv
เพื่อให้ตรงกับการเน้นเสียง - อัพเดท 2018-03 :
mlocate
พร้อมการสนับสนุนสำหรับ--transliterate
ตอนนี้รวมอยู่ใน Ubuntu 18.04 LTS Bionic Beaver ( v2และv3.1 )
- ปรับปรุง 2018-02 : นี้สามารถแก้ไขด้วยการร้องขอดึงนี้โดยmarcotrevisan จะเพิ่ม
grep -f
หรือfgrep
เพื่อหลีกเลี่ยงการตีความ"$CH"
ว่าเป็นอักขระพิเศษเช่นgrep ^
จะจับคู่บรรทัดใดก็ได้ แต่grep -f ^
จะตรงกับอักขระที่มีอักขระ^
เท่านั้น นอกจากนี้ยังอาจใช้คลาสตัวละครเพื่อสร้างการแสดงออกปกติเช่นREG="[$CHARS]"
นั้นอาจจะง่ายกว่าsed
คำสั่งของคุณ ระวังตัวละครพิเศษแม้ว่า! มิฉะนั้นเป็นวิธีที่ดี +1