コンテンツに100%NUL文字を含むファイルを見つける方法は?

コンテンツに100%NUL文字を含むファイルを見つける方法は?

これらのファイルを識別できるLinuxコマンドラインコマンドは何ですか?

AFAIKfindコマンド(またはgrep)はマッチテキストファイルの特定の文字列です。しかし、全体の内容を一致させたいです。つまり、どのファイルが正規表現と一致するかを確認したいと思います\0+行終端を無視します。。おそらくこのfind . cat | grepイディオムはうまくいくかもしれませんが、grepが行を無視する方法(そしてファイルをバイナリとして扱う方法)がわかりません。

背景:数日ごとにラップトップが停止すると、btrfsパーティションから情報が失われます。書き込み用に開いているファイルの内容はゼロに置き換えられます(ファイルサイズはほぼ同じままです)。私は同期を使用し、これらの偽のファイルが広がることを望んでいません。バックアップからインポートできるようにそのファイルを識別する方法が必要です。

ベストアンサー1

grepPerl正規表現パターンを使用して␀文字を取得できます。

$ echo -ne "\0\0" > nul.bin
$ echo -ne "\0x\0" > non-nul.bin
$ grep -P "[^\0]" *.bin
Binary file non-nul.bin matches

したがって、次のものを使用できます。

for path in *.foo
do
    grep -P "[^\0]" "$path" || echo "$path"
done

おすすめ記事