Bash Shell Script To Test For Empty Folder

by on July 6, 2012 · 5 comments· LAST UPDATED July 6, 2012

in

How do I check if a directory contains files? How do I find out if a directory contains files using bash shell under Linux or Unix like operating systems?

To test if folder is empty or not use the following methods.

Method # 1: Find command

The syntax is:

 
find /path/to/dir -maxdepth 0 -empty -exec echo {} is empty. \;
 

You can modify it as follows to work with shell if command:

 
#!/bin/bash
dir=$1
 
[ $# -eq 0 ] && { echo "Usage: $0 directory"; exit 2; }
[ ! -d "$dir" ] && { echo "$dir is not a directory."; exit 2; }
 
if find "$dir" -maxdepth 0 -empty | read;
then
 echo "$dir empty."
else
 echo "$dir not empty."
fi
 

Run the script as follows:
./script /etc
Sample outputs:

/etc not empty.

Create a directory / folder called /tmp/foo using mkdir command:
$ mkdir /tmp/foo
Run the script as follows:
./script /tmp/foo
Sample outputs:

/tmp/foo empty.

Method #2: Other commands

See our previous tutorial and comments for more info:

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 5 comments… read them below or add one }

1 Alireza July 19, 2012 at 6:32 am

These’re hard ways! You can do it:
if [ `ls -A "$dir" | wc -l` -eq 0 ]; then echo “Empty!”; fi

Reply

2 Saravanan August 13, 2012 at 9:38 am

In the find command you need to include the parameter -type d so that it searches only directories and not the files

Reply

3 TORNADO August 23, 2012 at 12:41 pm

if ! ls /path/to/dir/* 2> /dev/null; then echo Empty; fi

Reply

4 TORNADO August 23, 2012 at 12:53 pm

if ! ls /path/to/file/* 2> /dev/null; then
echo Empty;
fi

Reply

5 TORNADO August 23, 2012 at 12:54 pm
if ! ls /path/to/file/* 2> /dev/null; then
    echo Empty;
fi

Reply

Leave a Comment

Tagged as: , , , , , , , ,

Previous Faq:

Next Faq: