In this tutorial, the Bash script checks whether a directory exists or not.

Bash scripting Check if the directory exists

In this example,

if then the block is used to test conditional expression of the directory

Let us see some examples.

-check directory exists and prints the message. The conditional expression contains the -d option and directory path. -d option which checks for a directory exists or not.

Here is an example

FOLDER=test

if [ -d "$FOLDER" ]; then
    echo "Directory Exists"
fi

Please note that add space after [ and before -d.

  • How to mkdir only if a directory does not already exist?

In this example, using an if-else conditional block.

  • Checked if the directory exists using -d.
  • else block will have a code for not existing and create a directory using the directory path

Here is a code

FOLDER=test

if [ -d "$FOLDER" ]; then
    echo "Directory Exists"
else
    echo "Directory Exists"
    mkdir "$FOLDER"
fi

-Check directory exists using ternary syntax

Alternatively, the ternary conditional expression uses in place of if conditional expressions.

Here is an example conditional expression

FOLDER=test
[ -d "$folder" ] && echo "folder exists" || echo "folder not exist"
  • Check if multiple directories exist Sometimes, We want to check that multiple directories exist.

We have to use if conditional statements with logical AND operator(&&).

FOLDER1=test1
FOLDER2=test2

if [ -d "$FOLDER1" ] && [ -d "$FOLDER2" ] then
   echo "Folder1 and Folder2 exist"
fi

Check directory exists and is writable and executable

In this example, Code checks for the below things

  • folder exists or not
  • if exists, the Folder has permission to write and executable.
  • Finally, Print a string message
FOLDER=test

if [ -d "$FOLDER" -a -w -x "$FOLDER" ]
then
    echo "Directory exists, writable and executable"
fi

Check files or directory exists

Sometimes, we want to check if the file or directory exists. -e option checks for file or directory for the given path exists or not.

FILE_DIRECTORY=test
if [ -e "$FILE_DIRECTORY" ]
then
    echo "file or directory of test exists."
fi