アクセント付き文字(発音区別符号)を含むファイルを検索する必要がある場合があります。通常は、locate / mlocateを使用します。セットアップしたい(たぶん/etc/updatedb.conf
)ので、特定の言語マッピングを使用して、この特殊文字を検索できるようにします。次に例を示します。
a == âàáäÂÀÂÄ
e == êèéëÊÈÉË
i == îïíÎÏ
o == ôöóÔÖ
u == ûùüÛÜÙ
c == çÇ
n == ñ
したがってlocate -i liberación
、文字列liberacion、さらにはliberaciònを含むファイルも検索します。
注意と仮定
- そして多分他:ÂÃÄÀÁÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ。
- これは、スペイン語、フランス語、ドイツ語などの恋愛言語でよく見られる状況です。
- 私は常にロケール100%UTF-8を使用しています。
- 正規表現を使う必要はありません。
- パッチは、UnicodeのASCII文字変換をUnidecode / cUnidecodeのように使用する場合があります。mlocateのほとんどはCで書かれています。
関連した
- 同様の質問ですが、
find
- MiloslavTrmač(
mlocate
開発者)は、公式のソースコードはpagure.io(およびGithubのフォーク)にあると述べています。 - 私は、ファイルPagure.ioでmlocateレポ上の問題を、この機能を追加します。
- 2018年2月2日更新:これはmarcotrevisanによるこのプルリクエストで修正できます。アクセント付きマッチに使用する/ サポートを追加します。
-t
--transliterate
iconv
- 2018年3月3日更新:Ubuntu 18.04 LTS Bionic Beaver(v2およびv3.1)に
mlocate
サポート--transliterate
が含まれるようになりました。
- 2018年2月2日更新:これはmarcotrevisanによるこのプルリクエストで修正できます。アクセント付きマッチに使用する/ サポートを追加します。
grep -f
またはfgrep
を使用"$CH"
して特殊文字としての解釈を回避できます。たとえば、grep ^
任意の行にgrep -f ^
一致しますが、文字を含む行にのみ一致します^
。また、文字クラスを使用して正規表現を作成する方が簡単かもしれません。つまりREG="[$CHARS]"
、おそらくsed
コマンドより簡単です。ただし、特殊文字には注意してください。そうでなければ良いアプローチ。+1