ファイルシステムでファイル数を見つける方法は?

ファイルシステムでファイル数を見つける方法は?

私のファイルシステムにいくつのファイルがあるか知りたいです。私は次のことができることを知っています。

find / -type f | wc -l

これは非常に非効率的なようです。私が本当に望むのは、「ファイル」と見なされるユニークなinodeの総数を見つけることです。

もっと良い方法がありますか?

メモ:

私はファイル同期プログラムを開発しており、統計分析(たとえば、平均ユーザーが持っているファイルの総数やシステム内のファイルの数など)を実行したいので、これを行いたいと思います。しかし、これらのファイルについて何も知る必要はなく、ファイルが存在するという事実だけを知るだけです(パスはまったく重要ではありません)。特に、マウントされた各ファイルシステム(および関連するマウントポイント)に関する情報を知りたいです。

ベストアンサー1

--inodesオプションは、df使用するために予約されたinodeの数を示します。たとえば、

$ df --inodes / /home
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            3981312  641704 3339608   17% /
/dev/sda8            30588928  332207 30256721    2% /home
$ sudo find / -xdev -print | wc -l
642070
$ sudo find /home -print | wc -l
332158
$ sudo find /home -type f -print | wc -l
284204

返される項目の数は、ルート(/)ファイルシステムfindより大きく、/ homeより少なくなります。IUsedしかし、どちらも0.0005%以内です。違いがあるのは、ハードリンクと同様の状況によるものです。

ディレクトリ、シンボリックリンク、UNIXドメインソケット、および名前付きパイプは、すべてファイルシステムに関連する「ファイル」であることを覚えておいてください。したがって、find -type f統計的観点からフラグを使用することは非常に不正確です。

おすすめ記事