Search code examples
bashgnu-coreutils

In shell scripting, what does .[!.]* mean?


A command that prints a list of files and folders in the current directory along with their total sizes is du -sh *. That command alone doesn't, however, list hidden files or folders. I found a solution for a command that does correctly list the hidden files and folders along with the rest: du -sh .[!.]* *. Although it works perfectly, the solution was provided as-is, without any explanation.

What is the meaning of .[!.]*, exactly? How does it work?


Solution

  • It's a globbing pattern that basically tells bash to find all files starting with a ., followed by any character but a .and containing any character after that.

    See this page for a great explanation of bash globbing patterns.