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]*$'