递归计算多个目录的 inode 数

递归计算多个目录的 inode 数

我通常使用下面的语法来查找“当前”目录中所有目录的 inode:

find . -printf "%h\n" | cut -d/ -f-2 | sort | uniq -c | sort -rn

但是现在我想一次计算多个目录,例如 /home1 /home2 /home3 等等,因此我尝试:

find /home*/* -printf "%h\n" | cut -d/ -f-2 | sort | uniq -c

它没有给我通常的结果,因为它只计算每个 /home 目录的总 inode 数,而不是 /home*/* 内容的 inode 数。

请指教。

答案1

您是否真的可以通过这种方式计算 inode 数量是有争议的(考虑一下硬链接,每个硬链接是否都应该增加数量?)但我认为您对第一个命令没有异议。

分析一下cut -d/ -f-2会发生什么。在第一种情况下,它在这里被切断:

./example/foo/bar/…
         ^ here

在第二种情况下,它在这里切断:

/home-whatever/whoever/baz/…
              ^ here

似乎这不是您想要剪切的位置。调整命令cut

相关内容