Skip to content

Checking Folder Existence and Creating Folders in Bash

Discover methods for detecting folder existence and creating folders in Bash scripts. Explore various if statement approaches and folder creation techniques to efficiently handle folder operations in your scripts. Whether you're checking for folder existence or creating multiple folders, these examples provide valuable insights for improved automation and organization in your Bash scripts.

Detecting If a Folder Exists

Method 1: Using the -d Operator
folder_path="/path/to/folder"

if [ -d "$folder_path" ]; then
    echo "Folder exists"
else
    echo "Folder does not exist"
fi
Method 2: Using the test Command
folder_path="/path/to/folder"

if test -d "$folder_path"; then
    echo "Folder exists"
else
    echo "Folder does not exist"
fi
Method 3: Using the [[ Keyword
folder_path="/path/to/folder"

if [[ -d "$folder_path" ]]; then
    echo "Folder exists"
else
    echo "Folder does not exist"
fi

Creating Folders in Functions

Using mkdir Command
create_folder() {
    folder_name="$1"
    mkdir "$folder_name"
}

create_folder "my_folder"
Using mkdir Command with Parent Directories
create_folder() {
    folder_name="$1"
    mkdir -p "$folder_name"
}

create_folder "/path/to/my_folder"
Using mkdir -p Command
create_folder() {
    folder_name="$1"
    mkdir -p "$folder_name"
}

create_folder "/path/to/my_folder"
Using mkdir Command with Error Handling
create_folder() {
    folder_name="$1"
    if mkdir "$folder_name" 2>/dev/null; then
        echo "Folder created successfully"
    else
        echo "Failed to create folder"
    fi
}

create_folder "my_folder"
Using mkdir Command with Conditional Check
create_folder() {
    folder_name="$1"
    if [ ! -d "$folder_name" ]; then
        mkdir "$folder_name"
        echo "Folder created"
    else
        echo "Folder already exists"
    fi
}

create_folder "my_folder"
Creating Multiple Folders
create_folders() {
    for folder_name in "folder1" "folder2" "folder3" "folder4" "folder5"; do
        if [ ! -d "$folder_name" ]; then
            mkdir "$folder_name"
            echo "Folder $folder_name created"
        else
            echo "Folder $folder_name already exists"
        fi
    done
}

create_folders
Using declare to Create Folders
declare -a folders=("folder1" "folder2" "folder3" "folder4" "folder5")

for folder_name in "${folders[@]}"; do
    if [ ! -d "$folder_name" ]; then
        mkdir "$folder_name"
        echo "Folder $folder_name created"
    else
        echo "Folder $folder_name already exists"
    fi
done
declare -a folders=("folder1" "folder2" "folder3" "folder4" "folder5")

for folder_name in "${folders[@]}"; do


    create_folder "$folder_name"
done
declare -a folders=("folder1" "folder2" "folder3" "folder4" "folder5")

create_folders() {
    for folder_name in "${folders[@]}"; do
        if [ ! -d "$folder_name" ]; then
            mkdir "$folder_name"
            echo "Folder $folder_name created"
        else
            echo "Folder $folder_name already exists"
        fi
    done
}

create_folders
declare -a folders=("folder1" "folder2" "folder3" "folder4" "folder5")

create_folders() {
    for folder_name in "${folders[@]}"; do
        create_folder "$folder_name"
    done
}

create_folders
declare -a folders=("folder1" "folder2" "folder3" "folder4" "folder5")

for folder_name in "${folders[@]}"; do
    create_folder "$folder_name"
done
declare -a folders=("folder1" "folder2" "folder3" "folder4" "folder5")

for folder_name in "${folders[@]}"; do
    create_folder "$folder_name"
done
declare -a folders=("folder1" "folder2" "folder3" "folder4" "folder5")

create_folders() {
    for folder_name in "${folders[@]}"; do
        if [ ! -d "$folder_name" ]; then
            mkdir "$folder_name"
            echo "Folder $folder_name created"
        else
            echo "Folder $folder_name already exists"
        fi
    done
}

create_folders
declare -a folders=("folder1" "folder2" "folder3" "folder4" "folder5")

create_folders() {
    for folder_name in "${folders[@]}"; do
        create_folder "$folder_name"
    done
}

create_folders
declare -a folders=("folder1" "folder2" "folder3" "folder4" "folder5")

for folder_name in "${folders[@]}"; do
    create_folder "$folder_name"
done