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
.[!.]*
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.
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.
.
- match a .
, prefix of hidden file
[!.]
- match any character, as long as it is not a .
, see ref
*
- any number of characters
so this pattern means match files starts with .
but not ..