[英]In shell scripting, what does .[!.]* mean?
打印當前目錄中文件和文件夾以及它們的總大小的列表的命令是du -sh *
。 但是,僅該命令不會列出隱藏的文件或文件夾。 我找到了一個命令的解決方案,該命令可以正確列出隱藏文件和文件夾以及其余文件: du -sh .[!.]* *
。 盡管效果很好,但該解決方案是按原樣提供的,沒有任何解釋。
.[!.]*
確切含義是什么? 它是如何工作的?
這是一種遍歷模式,基本上告訴bash查找以a開頭的所有文件.
,后跟除以外的任何字符.
然后包含任何字符。
請參見本頁,了解有關bash遍歷模式的詳細說明。
.[!.]*
的含義是任何以.
開頭的文件或目錄名稱.
但不跟隨.
,因此它將包括當前目錄下的所有隱藏文件和目錄,但不包括父目錄。
因為此行為是由Shell Glob模式決定的。 因此,您可以使用ls .[!.]*
來查看shell環境中實際得到的內容。
順便說一句,您可以在shell中打開dotglob
來簡化du
命令。
$ shopt -s dotglob
$ du -sh *
$ shopt -u dotglob
從bash手冊
dotglob(如果已設置),bash包含以“。”開頭的文件名。 擴展路徑名的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.