The default behavior of du
on my system is not the proper default behavior.
If I ls
my /data
folder, I see (removing the stuff that isn't important):
ghs
ghsb -> ghs
hope
rssf -> roper
roper
Inside each folder is a set of folders with numbers as names. I want to get the total size of all folders named 14
, so I use:
du -s /data/*/14
And I see…
161176 /data/ghs/14
161176 /data/ghsb/14
8 /data/hope/14
681564 /data/rssf/14
681564 /data/roper/14
What I want is only:
161176 /data/ghs/14
8 /data/hope/14
681564 /data/roper/14
I do not want to see the symbolic links. I've tried -L
, -D
, -S
, etc. I always get the symbolic links. Is there a way to remove them?
Best Answer
This isn't
du
resolving the symbolic links; it's your shell.*
is a shell glob; it is expanded by the shell before running any command. Thus in effect, the command you're running is:If your shell is bash, you don't have a way to tell it not to expand symlinks. However you can use
find
(GNU version) instead: