Sort Folders by Size with Linux du

Sort Folders by Size with Linux du

Overview

Use Linux DU to batch check and sort folder sizes in Linux. You can also use Linux DU command on a Windows share or a NAS CIFS/NFS share.

Linux DU

Our users Home directories are placed in /u/ We then have groups for different users like “admins”,“students”: /u/students/USERNAME

I needed a script that creates a Text file with a Size sorted list of folders so I can check for Quota oversize. NetAPP sort is not comfortable enough to use as it sorts by the first letter and not by actual size. For example: NetAPP sort - 200,20,2,100,10,1 vs Needed sort 200,100,20,10,2,1.

So I have mounted the NFS share exported by the NetAPP and I use Linux DU command to scan and sort folders:

`#!/bin/bash

echo “Getting Quota Sizes”

workdir=/scripts logfile=$workdir/size.log

rm -rf $logfile

for group in `ls /u/`; do for i in `ls /u/$group/`; do if [ $i != “Expired” -a $i != “MOVED” -a $i != “.snapshot” ] ; then echo “Getting $group/$i Folder Size” echo du -s /u/$group/$i/ » $logfile fi done done echo “Sorting Results” sort -k1 -n -r $logfile » $logfile.txt rm -rf $logfile echo “Done !!"`

Linux DU Command Switches

`Usage: du [OPTION]… [FILE]… or: du [OPTION]… –files0-from=F Summarize disk usage of each FILE, recursively for directories.

Mandatory arguments to long options are mandatory for short options too. -a, –all write counts for all files, not just directories –apparent-size print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be larger due to holes in (`sparse’) files, internal fragmentation, indirect blocks, and the like -B, –block-size=SIZE use SIZE-byte blocks -b, –bytes equivalent to `–apparent-size –block-size=1’ -c, –total produce a grand total -D, –dereference-args dereference only symlinks that are listed on the command line –files0-from=F summarize disk usage of the NUL-terminated file names specified in file F; If F is - then read names from standard input -H equivalent to –dereference-args (-D) -h, –human-readable print sizes in human readable format (e.g., 1K 234M 2G) –si like -h, but use powers of 1000 not 1024 -k like –block-size=1K -l, –count-links count sizes many times if hard linked -m like –block-size=1M -L, –dereference dereference all symbolic links -P, –no-dereference don’t follow any symbolic links (this is the default) -0, –null end each output line with 0 byte rather than newline -S, –separate-dirs do not include size of subdirectories -s, –summarize display only a total for each argument -x, –one-file-system skip directories on different file systems -X, –exclude-from=FILE exclude files that match any pattern in FILE –exclude=PATTERN exclude files that match PATTERN –max-depth=N print the total for a directory (or file, with –all) only if it is N or fewer levels below the command line argument; –max-depth=0 is the same as –summarize –time show time of the last modification of any file in the directory, or any of its subdirectories –time=WORD show time as WORD instead of modification time: atime, access, use, ctime or status –time-style=STYLE show times using style STYLE: full-iso, long-iso, iso, +FORMAT FORMAT is interpreted like `date’ –help display this help and exit –version output version information and exit

Display values are in units of the first available SIZE from –block-size, and the DU_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables. Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set).

SIZE may be (or may be an integer optionally followed by) one of following: KB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.

Report du bugs to bug-coreutils@gnu.org GNU coreutils home page: General help using GNU software: For complete documentation, run: info coreutils ‘du invocation’`

All done.