Du - インデックスノード

Du - インデックスノード

システム上のすべてのinode使用量がどこにあるかを調べるために、サブディレクトリにいくつかのファイルがあることを確認したいと思います。空間活用のためこうやったと思います。

du -sh /*

これにより、ルートディレクトリ以外のディレクトリで使用されるスペースが提供されますが、この場合はサイズではないファイル数が必要です。

答え1

find . -maxdepth 1 -type d | while read -r dir
do printf "%s:\t" "$dir"; find "$dir" -type f | wc -l; done

セキュリティ/互換性を修正するためにGillesとxenoterracideに感謝します。

最初の部分は、find . -maxdepth 1 -type d現在の作業ディレクトリのすべてのディレクトリのリストを返します。 (警告:-maxdepthGNU拡張であり、GNU以外のバージョンにはないかもしれません  find。)これは次にパイプされます...

パート2:(while read -r dir; do 上記のwhile read -r dir(新しい行)do)ループを開始します。このコマンドは、着信whileパイプが開いている間while(フルディレクトリリストが送信されるまで)read変数に次の行を置きますdir。それから続けて...

パート3:printf "%s:\t" "$dir"ディレクトリ名の1つを含む文字列が印刷され、$dir その後にコロンとタブ(改行ではありません)が表示されます。

パート4:find "$dir" -type fディレクトリに名前が付けられたすべてのファイルのリスト$dir。このリストは次に送信されます。

パート5:wc -l標準入力に送信された行数を数えます。

最後の部分:done単にwhileループを終了します。

これにより、現在のディレクトリの下にあるすべてのディレクトリのリストを取得できます。各ディレクトリで使用できるように、その中にあるすべてのファイルのリストを作成しますwc -l。結果は次のとおりです。

./dir1: 234
./dir2: 11
./dir3: 2199
...

答え2

試してみてくださいfind . -type f | wc -l。現在のディレクトリ内のすべてのファイルとサブディレクトリ内のすべてのファイル数を計算します。すべてのディレクトリはファイルとは見なされず、通常のファイルのみが含まれます。

答え3

以下はいくつかの便利なリストコマンドのコレクションです(以前のユーザーコードから再ハッシュされました)。

フォルダとファイルの数をリストします。

find -maxdepth 1 -type d | sort | while read -r dir; do n=$(find "$dir" -type f | wc -l); printf "%4d : %s\n" $n "$dir"; done

ゼロ以外のファイルを含むフォルダを一覧表示します。

find -maxdepth 1 -type d | sort | while read -r dir; do n=$(find "$dir" -type f | wc -l); if [ $n -gt 0 ]; then printf "%4d : %s\n" $n "$dir"; fi; done

サブフォルダー数と一緒にフォルダーをリストします。

find -maxdepth 1 -type d | sort | while read -r dir; do n=$(find "$dir" -type d | wc -l); let n--; printf "%4d : %s\n" $n "$dir"; done

サブフォルダの数がゼロ以外のフォルダのリスト:

find -maxdepth 1 -type d | sort | while read -r dir; do n=$(find "$dir" -type d | wc -l); let n--; if [ $n -gt 0 ]; then printf "%4d : %s\n" $n "$dir"; fi; done

空のフォルダを一覧表示します。

find -maxdepth 1 -type d | sort | while read -r dir; do n=$(find "$dir" | wc -l); let n--; if [ $n -eq 0 ]; then printf "%4d : %s\n" $n "$dir"; fi; done

コンテンツ数とともに空でないフォルダを一覧表示します。

find -maxdepth 1 -type d | sort | while read -r dir; do n=$(find "$dir" | wc -l); let n--; if [ $n -gt 0 ]; then printf "%4d : %s\n" $n "$dir"; fi; done

答え4

Du - インデックスノード

なぜ(私を含む)誰も次のことを知らないのか分かりません。

du --inodes
--inodes
      list inode usage information instead of block usage

私はこれがOPの問題を解決すると確信しています。私は私の巨大なドライブからすべてのジャンクがどこにあるかを調べるために(そしてそれを古いディスクにオフロードするために)それをたくさん使い始めました。

追加情報

再帰的(他の場合に役立つ可能性があります)を望まない場合は、次を追加します。

-S, --separate-dirs

関連情報