du --inodes
を見つけました 便利ですが、du
のどのバージョンかわかりません それは必要です。 Ubuntu 17.10 では、次のように動作します:
du --inodes # all files and subdirectories
du --inodes -s # summary
du --inodes -d 2 # depth 2 at most
| sort -nr
と組み合わせる 含む inode の数で降順にソートします。
最も簡単な方法は find /path/to/search -ls | wc -l
のようです
検索は、すべてのファイルとフォルダーを検索するために使用されます。
-ls
すべての名前をリスト (印刷) します。これはデフォルトであり、省略してもほとんどすべてのシステムで同じように機能します。 (ほとんどの場合、一部のデフォルトは異なる場合があります)。ただし、これを明示的に使用するのは良い習慣です。
find /path/to/search -ls
だけを使用する場合 すべてのファイルとディレクトリが画面に出力されます。
wc
語数です。 -l
オプションは、行数をカウントするように指示します。
いくつかの方法で使用できます。例:
- WC テストファイル
- cat テストファイル |トイレ
最初のオプションでは、wc がファイルを開き、そのファイル内の行数、単語数、および文字数を数えます。 2 番目のオプションは同じことを行いますが、ファイル名を指定せずに stdin から読み取ります。
コマンドをパイプ |
で組み合わせることができます .最初のコマンドからの出力は、2 番目のコマンドの入力にパイプされます。したがって、find /path/to/search -ls | wc -l
find を使用してすべてのファイルとディレクトリを一覧表示し、出力を wc にフィードします。次に、Wc は行数を数えます。
(別の代替手段は `ls | wc' でしたが、find ははるかに柔軟で、学習するのに適したツールです。)
[コメント後に編集]
find と exec を組み合わせると便利かもしれません。
例えば。 find / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \;
/ 内のすべてのディレクトリを一覧表示し、検索したくないディレクトリを除外します。それらのそれぞれで前のコマンドをトリガーして、/ 内のフォルダーごとのファイルの合計を生成できます。
ただし:
<オール>Linux では動作しますが、Unix のようなものでは動作しません。
次の PHP スクリプトがこのトリックを実行します。
#!/usr/bin/php
<?php
function do_scan($dir, $dev) {
$total = 1;
if (\filetype($dir) === 'dir' && \lstat($dir)['dev'] == $dev) {
foreach (\scandir($dir) as $file) {
if ($file !== '.' && $file !== '..') {
$total += do_scan($dir . \DIRECTORY_SEPARATOR . $file, $dev);
}
}
print "$total\t$dir\n";
}
return $total;
};
foreach (\array_slice($argv, 1) as $arg) {
do_scan($arg, \lstat($arg)['dev']);
}
それをファイルに入れます(たとえば、「treesize
」 ")、chmod +x
それを ./treesize . | sort -rn | less
で実行します .