我想显示一些关于隐藏子目录的信息,但注意到一种我不理解的通配符行为。
ls .*
展开到 pwd、父目录路径和所有隐藏的子目录路径,然后列出所有这些目录的内容。这样就好了。
du -s .*
另一方面,似乎只会扩展到 pwd 和父目录路径,因为它只列出了这些的大小。我不明白为什么它的行为与 的行为不同ls
。
使用du -s .[^.]*
解决了实际问题,因为它列出了所有隐藏目录的大小。我知道这有效,但为什么不起作用du -s .*
?
答案1
我将重新措辞我的答案,因为我以某种方式误读了这个问题。
该参数-s
总结了目录的大小,并且恰好包括了其下所有目录的大小。它们不会显示在输出中。
由于通配符.*
与当前目录 ( .
) 匹配,因此所有子目录都会被抑制du
。
但事情没那么简单。只有当du
的参数中父文件夹位于其子文件夹之前时,才会发生这种情况;然后不会显示子文件夹。
您的主文件夹中可能存在桌面、文档和下载文件夹。在您的主文件夹中,尝试运行du -s D*
。这应该会显示这三个文件夹的大小。现在,尝试du -s . D*
运行du -s D* .
。
由于通配符.*
显示在文件夹.
之前.hidden
,因此它们没有机会出现。