In this article, we will look at ways to create multiple directories / sub-directories at once using mkdir
in terminal. We will only be focusing on ways that are common and well-supported across different types of shells (such as bash, zsh, fish, etc.).
For all the examples in the article, we will be considering the following directory structure:
public/
Please note the use of -p
flag with mkrdir
in the examples; it is used to create intermediate directories as required — i.e. it will automatically produce the parent directories that do not exist.
Using Space-Separated Directory Names
You could cd
into the directory where you want to create the sub-directories and specify space-separated multiple directories / sub-directories with mkdir
like so:
cd public mkdir -p static/css static/js views/html
This will produce the following output:
public/ ..└── static/ ....└── css ....└── js ..└── views/ ....└── html
Specifying Directories by Grouping
Grouping can be a great way to avoid repetition, but it comes at a cost of reduced readability. With mkdir
you can group the directories you wish to create by enclosing comma-separated directory names (without spaces) inside curly braces. Consider, for example:
mkdir -p public/{static/{cs,js},views/html}
The above example will produce the following output:
public/ ..└── static/ ....└── css ....└── js ..└── views/ ....└── html
Creating Multiple Directories With Spaces in the Name
From the previous examples, you may be wondering how to create a directory with space in the name. To do that, you have two options:
- Escape the space (for example,
hello\ world
) - Use single or double quotes (for example,
'hello world'
)
Examples:
Let's suppose we want to create the following directory structure:
public/ ..└── static/ ....└── css test ....└── js test ..└── views/ ....└── html
We could achieve that in the following ways:
Using Space-Separated Directory Names:
cd public mkdir -p static/'css test' static/js\ test views/html
Specifying Directories by Grouping:
mkdir -p public/{static/{'cs test',js\ test},views/html}
This post was published (and was last revised ) by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.