ASCII以外の文字を含むファイルの検索

ASCII以外の文字を含むファイルの検索

ASCII以外のUnicode文字を含むディレクトリ内のファイルを見つけようとします。私が見つけなければならない正確なキャラクターが何であるかを事前に知りませんでした。

概念的には、これは簡単な作業でなければなりません。正規表現に一致するすべてのファイルを見つけます[^\0-\x7f]。しかし、私は実際にこれを行うことを思い出すことはできません。

私が考えることができる最も近いものは次のとおりです。

find . -type f -exec grep -Plv '[\0-\x7f]' {} \;

ほとんどのプレーンテキストファイルは、空白行の一致によってリストされます。

スイッチ-eはと組み合わせることを許可して-Pいないので、thatを使用することはできませ-e '[\0-\x7f]' -e '^$'[\0-\x7f]|^$

このような文字を検索する他の方法はありますか?

ベストアンサー1

を使用すると、要求されたgrep -Pv '[\0-\x7f]'行に-v()ASCII文字は含まれません。これは、ASCII以外の文字を含む行とは異なります。これだけ聞いてください。

LC_ALL=C grep -lP '[^\0-\x7f]'

コードポイントの範囲ではなく、ASCIIロケールで印刷できない文字を要求できます。これはほぼ同じです(制御文字も含まれています)。

LC_ALL=C grep -l '[^[:print:]]'

同じでより洗練されたアプローチは、全体がASCII文字で構成される行を検索し、一致を逆に置き換えることです。

LC_ALL=C grep -vlP '^[\0-\x7f]*$'

おすすめ記事