How do I list all the files in a directory and their recursive file sizes?
I want to see the sizes 'rolled up' to the parent directories in the directory listed. I don't want to see the child directories or their contents or sizes.
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.Sign up to join this community
I guess the easiest way is by typing
ls -l, or
ls -lh which will provide the file size in human-readable format (KB, MB, etc).
If 'recursively' means listing all the subsequent folders, e.g.:
Then you should also add parameter
ls -lR or
More information for
ls can be found by typing
The following command as Lekensteyn proposed will probably do the job:
du -h --max-depth=1 <folder>
-h is for human-readable
--apparent-size is another way to display sizes as already stated
--max-depth is the level of subfolders you want to go down to.
apt-get install ncdu
It is interactive too so if you want to check on a sub folder just UP, DOWN, and Enter to it.
To get the total size of a directory and all children
du -hs directory/*
Also check out
tree. It is not installed by default but is the repositories.
richard@legend:~$ tree Applications/ -s Applications/ ├── [ 4096] AlexFTPS-1.0.2 │ ├── [ 31232] AlexPilotti.FTPS.Client.dll │ ├── [ 274432] C5.dll │ ├── [ 1457] C5-License │ ├── [ 35147] COPYING │ ├── [ 7639] COPYING.LESSER │ ├── [ 70] ftps │ ├── [ 28672] ftps.exe │ ├── [ 98304] Plossum CommandLine.dll │ ├── [ 1557] Plossum-License │ └── [ 2560] README └── [ 4096] src └── [ 180849] AlexFTPS_bin_1.0.2.zip
More options can be found in the man page.
Since you don't specifically mention you need a terminal-based solution, I think baobab a.k.a. Disk Usage Analyzer is missing from the list.
It is installed in Ubuntu by default and does exactly what you want in a nice graphical UI with the ability to drill down the directory hierarchy.
Apart from displaying a list of directories with their sizes, it is also showing a rings or treemap chart of filesystem usage, which is extremely useful for visualising the directories which take up the most space.
A terminal solution is the
du --all --human-readable --apparent-size
du -ah --apparent-size)
du displays the disk usage for each file and directory. The options explained:
-a- show sizes for files as well, not just directories
-h- show sizes in a human readable format, e.g.
--apparent-size- show the actual file size, not the sizes as used by the disk.
This seems to do the trick when simlinks are involved.
To get a sorted list put everything in MB and sort :
du -m * | sort -n
Or use tool such as DiskReport to generate a report of full disk tree.
Another terminal solution with
find and sort (by filesize, column 1)
$ find . -maxdepth 1 ! -path . -printf "%s %p\n" | sort -n -k1 178 ./somefile.txt 219 ./somefile2.txt 4096 ./c 4096 ./cs2 4096 ./perl 4096 ./python 4096 ./random 4096 ./sh