196

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 ?

2
  • 12
    Thanks ;-) but I've already tried and couldn't find anything. And try Googling du!
    – kevin
    Aug 5, 2010 at 6:39
  • 1
    Time changes everything I guess. Now googling du gives stackoverflow answers :D Jul 27, 2021 at 6:33

10 Answers 10

294

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.

8
25

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.

20

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.

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

Try:

$ du -s ./f1

or

$ du -sh ./f1

for more friendly readable sizes.

0
6

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
4

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.

4

I like the following approach:

du -schx .[!.]* * | sort -h

where:

  • s: display only a total for each argument
  • c: produce a grand total
  • h: print sizes in a human-readable format
  • x: skip directories on different file systems
  • .[!.]* *: Summarize disk usage of each file, recursively for directories (including "hidden" ones)
  • | sort -h: Sort based on human-readable numbers (e.g., 2K 1G)
2
  • I just needed to add the -r to the sort to have it give me it in descending order.
    – ScottS
    Jul 17, 2023 at 20:34
  • this is the best answer as it takes into account also files in the current folder and not only subfolders.
    – Sysanin
    Jul 21, 2023 at 8:39
3

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

2
  • 4
    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. Jun 30, 2015 at 16:41
  • 4
    Can you expand yourt answer to explain what the parameters do?
    – fixer1234
    Jun 30, 2015 at 18:59
3

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

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .