Shell Script to Find Large Directories

In the tutorial, we will look at a shell script that can quickly find the largest directory in a Linux server. This is very useful if you want to clean up space on your filesystem.

The shell script shows X number of directories that consume space in a given directory path. In the script I have used du command, then sort and head commands.

Script to find largest directories

Lets how to write a script to find top directories as follows:


#check if user input argument

if [ $# -eq 0 ]; then

#if no argument print next messge and exit from script
echo "Usage: $0 "

exit 1

# Save first arguments to variables
#set value for variable count value 1

#just print empty line
echo ""

#Print next message:
echo "Here is the ${HeadValue} biggest directories located in ${CheckedDir}:"

echo ""

#Getting list of directories and space they use.
du -a --max-depth=1 --one-file-system ${CheckedDir}/ |

#next we sort result
sort -rn |

sed "1d" |

# next we get only first X directories
head -"${HeadValue}" |

#next print result to user
while read size dirrr ; do
#counting size in Mb

size="$(( size / 1024 ))"

#show output for user
echo "N°${count} : ${dirrr} is ${size} Mb"



echo ""

Script Output

./ /home/yevhen/

Here is the biggest directories located in /home/yevhen/:

N°1 : /home/yevhen//Fly is 14043 Mb

N°2 : /home/yevhen//VirtualBox VMs is 5837 Mb

N°3 : /home/yevhen//Downloads is 2224 Mb

N°4 : /home/yevhen//.icedove is 963 Mb

N°5 : /home/yevhen//Downloads is 645 Mb

N°6 : /home/yevhen//.wine is 602 Mb

N°7 : /home/yevhen//.cache is 324 Mb

N°8 : /home/yevhen//Dropbox is 324 Mb

N°9 : /home/yevhen//.config is 263 Mb

N°10 : /home/yevhen//.local is 153 Mb

Leave a Comment