When working on automation scripts or organizing large datasets, you often need to create sequential folders like 00-99 across multiple locations. Doing this manually would be:
- Time-consuming for hundreds of directories
- Error-prone when creating 100 folders each time
- Inconsistent in naming patterns
Bash's brace expansion feature lets you generate sequences with a single command:
mkdir -p {00..99}Breaking this down:
mkdir
: The directory creation command-p
: No error if existing (useful when re-running){00..99}
: Generates zero-padded numbers 00 through 99Case 1: Creating in current directory
# Simple creation mkdir {00..99}Case 2: Creating with specific permissions
mkdir -m 755 {00..99} # Sets rwxr-xr-x permissionsCase 3: Creating in multiple target directories
target_dirs=("/data/project1" "/backups/project2") for dir in "${target_dirs[@]}"; do mkdir -p "${dir}"/{00..99} doneWhen implementing in scripts, consider:
# Check if parent directory exists first parent_dir="/path/to/parent" if [ -d "$parent_dir" ]; then mkdir -p "${parent_dir}"/{00..99} else echo "Error: Parent directory missing" >&2 exit 1 fiFor creating across hundreds of locations, this approach is:
- Faster than 100 separate mkdir commands
- More memory-efficient than loop implementations
- Atomic in execution (all succeed or none)
Method Pros Cons Brace Expansion Simplest syntax, native to bash Bash-specific seq + xargs More portable Complexer syntax printf + loop Maximum control Verbose Example using seq:
seq -w 0 99 | xargs mkdirIn my recent data pipeline project, I used this technique to:
# Create folder structure for daily snapshots for year in {2020..2023}; do mkdir -p "/data/archive/${year}"/{01..12}/{00..31} doneThis created 4,464 directories (4 years × 12 months × 31 days) with perfect zero-padding.
When managing large-scale file systems, you might need to create structured directory trees with numbered folders ranging from 00 to 99 across multiple locations. Doing this manually would be incredibly time-consuming and error-prone.
Here's the most efficient way to accomplish this in Ubuntu/Linux:
mkdir -p {00..99}
Let's examine why this works:
mkdir
: The standard directory creation command-p
: Ensures no error if folders exist (helpful for repeated runs){00..99}
: Bash brace expansion that generates two-digit numbers
For creating these folders in multiple locations:
target_dirs=("/path1" "/path2" "/path3")
for dir in "${target_dirs[@]}"; do
mkdir -p "$dir"/{00..99}
done
To verify successful creation and count folders:
ls -d */ | wc -l
For systems with limited bash features, use seq:
for i in $(seq -w 0 99); do
mkdir -p "$i"
done