≡ Menu

Bash Shell Script To Test For Empty Folder

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:

Share this tutorial on:

Your support makes a big difference:
I have a small favor to ask. More people are reading the nixCraft. Many of you block advertising which is your right, and advertising revenues are not sufficient to cover my operating costs. So you can see why I need to ask for your help. The nixCraft, takes a lot of my time and hard work to produce. If you use nixCraft, who likes it, helps me with donations:
Become a Supporter →    Make a contribution via Paypal/Bitcoin →   

Don't Miss Any Linux and Unix Tips

Get nixCraft in your inbox. It's free:



{ 5 comments… add one }
  • Alireza July 19, 2012, 6:32 am

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

  • Saravanan August 13, 2012, 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

  • TORNADO August 23, 2012, 12:41 pm

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

  • TORNADO August 23, 2012, 12:53 pm

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

  • TORNADO August 23, 2012, 12:54 pm
    if ! ls /path/to/file/* 2> /dev/null; then
        echo Empty;
    fi
    
Security: Are you a robot or human?

Leave a Comment

You can use these HTML tags and attributes: <strong> <em> <pre> <code> <a href="" title="">


   Tagged with: , , , , , , , ,