空のディレクトリと空でないディレクトリの数を数えたいです。ただし、ファイルとサブディレクトリを含むすべての空のディレクトリとディレクトリのサイズは4096と同じです。したがって、4096 サイズのため、空のディレクトリも空でないディレクトリに含まれます。そして空のディレクトリの数は0です。
答え1
あなたが興味を持っているのが空虚であるならば、これはfind
最も簡単なツールのようです。
find . -type d -empty
現在のディレクトリのすべての空のフォルダが一覧表示されます。他の場所で検索するには、ポイントを変更してください。
find . -maxdepth 1 -type d -empty
サブディレクトリの表示が防止されます。
最終目標はカウントを計算することですので、@alecxsコメントに基づいています
find . -maxdepth 1 -type d -empty -printf '\n' | wc -l
。これは、各ディレクトリごとにプロセスを分岐しないという利点があるため、特に空のディレクトリ数が多い場合は速度が速くなります。
答え2
私は通常bashのフォルダサイズエイリアスを(/root/).bashrcに入れます。
alias ds='du --max-depth=1 -ch'
だから、毎回完全な内容を入力しません。これにより、フォルダサイズが人間が読める形式(4K、1M、2Gなど)で表示されるため、
次のようにこのコマンドを実行してgrepを介してパイプすることができます。
ds |grep -c 4.0K
これは空のディレクトリを計算するか、次のことを行います。
ds |grep -cv 4.0K
空でないディレクトリを計算します
エイリアスを使用したくない場合は、次のds
ように置き換えてくださいdu --max-depth=1 -ch
。完全に正確にするには、h
次をスキップして次の手順を実行します。
du --max-depth=1 -cb |grep -c "^4096"$'\t'
ディレクトリサイズが4096Bの場合でも、この内容が表示されます。シンボリックリンク内部またはファイル0Bサイズだからこれはいいえ空のディレクトリ数が正しく表示されるので、上記の解決策をfindで使用する方が良いかもしれません。
私が一般的に使用するもう1つの便利な方法は、大きなディレクトリ(1Gより大きいディレクトリ)を一覧表示して並べ替えることです。
ds |grep "G"$'\t' |sort -n
役に立ちます。