Bash script that determines if a directory is empty or not

Shell Scripting @ Freshers.in

In the realm of file system management, it’s often necessary to check if a directory is empty meaning it contains no files or subdirectories. Such a check can be crucial in deployment scripts, cleanup routines, or when setting up conditions for certain file operations. This article provides a professional guide to writing a Bash script that performs this very check. We will walk through the creation of the script, explain how it works, and then test it with actual data.

#!/bin/bash

# Script to check if a directory is empty

# Check if a directory name is provided
if [ $# -eq 0 ]; then
    echo "Usage: $0 <directory>"
    exit 1
fi

# Check if the directory exists
if [ ! -d "$1" ]; then
    echo "Error: Directory not found."
    exit 1
fi

# Count the number of files and subdirectories
if [ -z "$(ls -A "$1")" ]; then
    echo "The directory '$1' is empty."
else
    echo "The directory '$1' is not empty."
fi

The script works by:

  • Ensuring a directory name has been supplied as an argument.
  • Checking that the directory exists.
  • Using the ls -A command to list all contents, including hidden files. If the output is empty (checked with -z), the directory is empty.

Testing the Script with Real Data

Create two test directories, one empty and one with files:

mkdir -p test_dir_empty
mkdir -p test_dir_not_empty
touch test_dir_not_empty/file.txt

This will create one empty directory named test_dir_empty and another named test_dir_not_empty containing a single file.

Run the script on both directories:

./check_empty_dir.sh test_dir_empty
./check_empty_dir.sh test_dir_not_empty

The output will verify the emptiness of the directories:

The directory 'test_dir_empty' is empty.
The directory 'test_dir_not_empty' is not empty.

Other urls to refer

  1. PySpark Blogs
Author: user