137

I want a list of the folders from the current directory or one that I specify with their size.

I have tried with du but I only get the size of the directories I specify (du . ./f1), and ls doesn't show the size of the folders.

How do I do this without any scripting ?

  • not to sound like a jerk, but 'man du' ;) – Jakub Aug 3 '10 at 19:47
  • 5
    Thanks ;-) but I've already tried and couldn't find anything. And try Googling du! – kevin Aug 5 '10 at 6:39
216

If you want to show all the directories in the current directory:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

To show them starting from another directory:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

If you want to make sure directories with names starting with a dot are included do shopt -s dotglob first.

18

On a Mac, the --max-depth option is supplanted by -d [depth]. So, to see a human readable listing of your root drive plus 2 levels deep use the following:

du -hd 2 /* 

Note: this command will expose the top two directory levels off your root. This includes traversing one level into your Volumes, and will list the summary sizes of each top-level directory in each of your attached volumes. Depending on what you have attached, this command could take some time to complete.

13

Another aproach is the --max-depth option.

du -h --max-depth=1 .

Will list all directories and files under the current folder with size.

Depth 2 would list one more level of folders.

  • 4
    On Mac, it's du -hd 2 . for 2 levels of depth. – Ryan Aug 2 '14 at 2:12
  • Ah yes. And probably on FreeBSD as well. Thanks for the info. – matthias krull Aug 7 '14 at 11:25
5

Try:

$ du -s ./f1

or

$ du -sh ./f1

for more friendly readable sizes.

2

$ du --max-depth=1 /var/www/ | sort -n -r

  • 3
    When adding an answer to an older question with existing answers it is good practice to explain how your answer is different and include some explanation so that it isn't a command only answer. – Jason Aller Jun 30 '15 at 16:41
  • 3
    Can you expand yourt answer to explain what the parameters do? – fixer1234 Jun 30 '15 at 18:59
2

Worth to mention the NCurses Disk Usage shell command.

Ncdu is a disk usage analyzer with an ncurses interface. It is designed to find space hogs on a remote server where you don't have an entire graphical setup available, but it is a useful tool even on regular desktop systems. Ncdu aims to be fast, simple and easy to use, and should be able to run in any minimal POSIX-like environment with ncurses installed.

2

Building on the accepted answer, this command will show you the sizes of the folders in the directory, and will also list them by size for you to interpret easier:

$ du -sh */ | sort -rn
1

On Mac, you can install the GNU (Linux) implementation of du with Homebrew (brew install coreutils). Then for example:

gdu folder -shL --exclude=.git

where

  • gdu is the name given to the GNU implementation of du (by default Homebrew does not hide /usr/bin/du);
  • s produces a grand total for the folder specified (omit if you want to see the breakdown);
  • h outputs human-readable sizes;
  • L follows symlinks;
  • --exclude=.git excludes the git directory within the specified folder (this is just an example).

You can ignore more folders by adding --exclude=blah. You can also specify several folders at once (ie gdu folder1 folder2 ...), and in that case, you can combine all the subtotals into a single size using option c.

1

Here is a POSIX script that will work with:

  • A file
  • Files
  • A directory
  • Directories
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

Source

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.