Reputation: 570
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?
Upvotes: 6
Views: 5721
Reputation: 12157
.[!.]*
the meaning is any file or directory name start with .
but not following with .
, so it will include all hidden files and directories under current directory but exclude parent directory.
Because this behaviour is decided by shell glob pattern. So you can use ls .[!.]*
to see what actually get in your shell environment.
BTW, you can turn dotglob
on in your shell to simplify your du
command.
$ shopt -s dotglob
$ du -sh *
$ shopt -u dotglob
From bash manual
dotglob If set, bash includes filenames beginning with a `.' in the results of pathname expansion.
Upvotes: 0