在当前目录中打印文件和文件夹列表的命令及其总大小为du -sh *
。但是,该命令不会列出隐藏的文件或文件夹。我找到了一个命令解决方案,它可以正确地列出隐藏文件和文件夹以及其余文件:du -sh .[!.]* *
。虽然它完美无缺,但解决方案按原样提供,没有任何解释。
.[!.]*
的含义是什么?它是如何工作的?
答案 0 :(得分:3)
答案 1 :(得分:3)
它是一个通配模式,它基本上告诉bash找到所有以.
开头的文件,后跟任何字符,但后跟.
并包含任何字符。
有关bash globbing模式的详细解释,请参阅this page。
答案 2 :(得分:1)
.[!.]*
含义是以.
开头但不跟随.
的任何文件或目录名称,因此它将包括当前目录下的所有隐藏文件和目录,但不包括父目录。
因为这种行为是由shell glob模式决定的。因此,您可以使用ls .[!.]*
查看shell环境中的实际内容。
顺便说一句,您可以在shell中启用dotglob
以简化du
命令。
$ shopt -s dotglob
$ du -sh *
$ shopt -u dotglob
来自bash手册
dotglob 如果设置,bash包含以“。”开头的文件名。在路径名扩展的结果中。