システム上のすべての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
現在の作業ディレクトリのすべてのディレクトリのリストを返します。 (警告:-maxdepth
GNU拡張であり、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