我想查看所有目录的大小,包括隐藏目录。我遇到的一个命令是这样的:
du -hs .[!.]*
但它给了我错误:
du: cannot access ‘.[!.]*’: No such file or directory
我无法弄清楚我做错了什么。
答案1
您收到的错误意味着当前目录中没有隐藏文件或目录。.[!.]*
扩展以匹配名称以“.”开头的任何文件或目录。后面跟除“.”以外的任何内容;如果它不匹配任何内容,则默认情况下保留原样。因此,在您的情况下,du
运行.[!.]*
作为其参数,而不是真实的文件或目录名称,并且它会产生您所看到的错误消息。
您可以nullglob
在此处启用更改 shell 的行为:
shopt -s nullglob
然后 shell 将删除不匹配的模式,du
如果没有匹配,将报告当前目录的使用情况(这是没有参数时的默认行为)。
为了实现你想要的,在 Bash 中,你应该这样做:
du -sh .[!.]*/ */
这将扩展到当前目录中的所有目录,包括隐藏的目录。如果nullglob
未启用,它仍然会产生错误消息,但您将看到任何匹配目录的大小。
答案2
听起来你想要这个命令:
du -hsc --exclude "./.*" */ | sort -h