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

Inline loop calling external create_folder function

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

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

Function-based folder creation with existence check (mkdir)

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

Wrapper function calling external create_folder helper

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

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

create_folders

Direct array loop using create_folder helper

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

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

Repeated inline loop for external folder creation logic

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

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

Reusable function with mkdir and status output

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

Abstracted folder creation via helper function

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

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

create_folders

Minimal array-driven folder creation loop

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

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