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.

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.
