运行 du -hs .[!.]* 时出现错误

运行 du -hs .[!.]* 时出现错误

我想查看所有目录的大小,包括隐藏目录。我遇到的一个命令是这样的: 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

相关内容