“du”是否列出系统上的每个文件?

“du”是否列出系统上的每个文件?

是否du /列出每个文件? 有没有更好的办法?

答案1

如果目标是列出文件系统上的每个文件/文件夹,那么您可以使用ls递归选项-R

# ls -R /

如果您尝试使用大小来过滤文件,请执行以下操作

# find / -type f -size +10c 

上述命令为您提供大小-type f大于 10 字节(选项)的文件(选项)。c

答案2

尝试这个:

du -sah /

它的意思是:
S总结A所有文件和文件夹,请以H人类可读的输出”

无论如何,您可能更喜欢使用“df”命令。它更快,并列出设备的输出,这可能是更相关的信息:

df -h

答案3

要列出所有文件和目录,您有很多选择

SHW@SHW:/tmp # time du . > /dev/null 

real    0m0.046s
user    0m0.000s
sys 0m0.000s

SHW@SHW:/tmp # time find . > /dev/null 

real    0m0.003s
user    0m0.000s
sys 0m0.000s

SHW@SHW:/tmp # time ls -aR > /dev/null 

real    0m0.003s
user    0m0.004s
sys 0m0.000s

SHW@SHW:/tmp # time tree -a > /dev/null 

real    0m0.002s
user    0m0.000s
sys 0m0.000s

SHW@SHW:/tmp # du -sch .
4.1M    .
4.1M    total

阅读每个命令的手册页以获取更多信息

至少对于上面的例子来说,tree -a似乎很快。 /tmp目录包含8个文件、21个目录、4.1M数据。

答案4

du -a /将列出您拥有的所有目录中的所有文件搜索访问权限(前提是您还具有对其父目录的读取权限)。它需要搜索权限,因为它需要能够报告这些文件的disc usage,而不是仅仅列出它们。

对于一些du像 GNU 这样的实现du,它列出了文件确实与目录条目如果一个文件有多个硬链接(多个目录条目指向它),则只会列出其中一个,以便文件不列出多次。

.要列出除和 之外的所有目录条目..,您可以使用:

find /

这还将列出您拥有的目录中的条目并不是搜索进入。

对于所有目录条目,包括...

ls -Ra /

(关于目录访问的相同注释)。

如果目的是与 给出的文件数进行比较df -i,那么您将使用这种du -a方法,但随后您需要添加标志-x以限制为一个文件系统。另请注意,除了目录访问问题之外,它还会丢失某些进程仍在打开但已被删除的文件、被另一个文件系统屏蔽的文件,并且还要注意一些文件系统(例如 ext4)具有特殊保留文件(索引节点)未链接到任何目录,因此即使在最好的情况下,您也会发现 给出的数字df -i /与 给出的数字之间存在差异du -ax /// | grep -c ///

另请参阅 GNUdu的:

du -sx --inodes /

得到那个计数。

相关内容