How
linux
February 22, 20222 min read

How to check if a directory exist in a Bash Script?

A directory consists of files or sub-directories. While programming or writing a Bash script, you'll often come across a situation where you have to check if a directory exists in a certain path. Depending on the existence of a directory, you usually end up doing a certain logic or operation.

So, let's see how we can check if the directory exists in a path or not.

Check if Directory exist in Bash Script

Checking if a directory exist or not can be easily done by using if command. if performs a conditional check on the command that goes inside the brackets [ ].

if [ -d "$DIRECTORY_PATH" ]; then
  # If the $DIRECTORY_PATH exist, code inside the block will get executed
fi

Check if Directory does not exist in Bash

Here we are checking the error condition or the negative condition if the directory does not exist.

if [ ! -d "$DIRECTORY_PATH" ]; then
  # If the $DIRECTORY_PATH does not exist, code inside the block will get executed
fi

Are you looking for the scenario if a file exist or not in bash scripts?

Note that a the code inside the if block will still get executed if the folder was a symbolic link.

Also Note that, the "$DIRECTORY_PATH" is enclosed with double quotes. This is to handle cases where the directory name can have spaces and special characters(wildcard characters).

Let's say you had created a symbolic link of a folder.

ln -s "$DIRECTORY_PATH" "$SYMLINK_PATH"

Now if we check if the symbolic link, you will get an error rmdir: failed to remove 'symlink': Not a directory

if [ -d "$SYMLINK_PATH" ]; then
  rmdir "$SYMLINK_PATH"
fi

So, to treat this edge case, we will have to handle symlink's condition as shown below.

if [ -d "$DIRECTORY_PATH" ]; then
  if [ -L "$DIRECTORY_PATH" ]; then
    # It is a symlink!
    # Symbolic link specific commands go here.
    rm "$DIRECTORY_PATH"
  else
    # It's a directory!
    # Directory command goes here.
    rmdir "$DIRECTORY_PATH"
  fi
fi

The above code is an ideal way to check if a path is a directory or not.

Share this blog
Tagged in :
linux
bash
Like what you read?
Subscribe to our Newsletter
Subscribe to our email newsletter and unlock access to members-only content and exclusive updates.
About the Author
Satvik
Satvik
Entrepreneur
Satvik is a passionate developer turned Entrepreneur. He is fascinated by JavaScript, Operating System, Deep Learning, AR/VR. He has published several research papers and applied for patents in the field as well. Satvik is a speaker in conferences, meetups talking about Artificial Intelligence, JavaScript and related subjects. His goal is to solve complex problems that people face with automation. Related projects can be seen at - [Projects](/projects)
View all articles
Previous Article
Next Article