![递归计算多个目录的 inode 数](https://linux22.com/image/1618041/%E9%80%92%E5%BD%92%E8%AE%A1%E7%AE%97%E5%A4%9A%E4%B8%AA%E7%9B%AE%E5%BD%95%E7%9A%84%20inode%20%E6%95%B0.png)
我通常使用下面的语法来查找“当前”目录中所有目录的 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
。