非常に奇妙な状況が発生しました。さまざまなサイズのファイルを含むファイルシステムがあり、ファイルを並べ替えると破損しているように見え、何も表示されません。
このファイルがどれだけ多いかわかりません。他のすべてのファイルとまったく同じように見えます。これまで私が見つけた最良の方法は、find . -type f | xargs wc -l
0を返すファイルを実行して検索することです。
ただし、これらのファイルの一部はサイズが10 GBに達し、空であってもファイルを確認するのに1分以上かかります。約5000万個のファイルを確認する必要がありますが、これはほとんど不可能です。
最大の質問は、単純な検索を実行するよりもはるかに速くこれらのファイルの内容を調べるための低レベルの方法があるかどうかです。
ベストアンサー1
そして、ファイルを検索しても何も表示されません。
cat
次の実験で示すように、ファイルの出力がないということはファイルが空であるという意味ではありません。
$ truncate -s 1M foo
$ ll foo
-rw-r----- 1 user users 1048576 Nov 15 19:28 foo
$ file foo
foo: data
$ cat foo
$
cat
1MiBのNUL文字を出力しますが、これらの文字は端末では見えません。
空のファイルに関するあなたの質問は多少曖昧です。上記にfoo
該当しますか? 「空」が長さがゼロであることを意味する場合は、find
次のようにします。
find dir -type f -empty
以下の長さ0のファイルをすべて一覧表示しますdir
。サポートfind
していない場合は-empty
、使用できます-size 0
。
-s file
シェルスクリプトでは、存在し、空でない場合はtrueの式を使用できます。file
ファイルが空であることを確認するには(存在すると仮定)、次のようにします。
if [ \! -s file ] ; then ... ; fi
stat(1)
または、次はGNUバリアントを使用できます。
$ stat --format=%s foo
1048576
比較により、さらに使用できます。