27

How can I create multiple nested directories in one command?

mkdir -p /just/one/dir

But I need to create multiple different nested directories...

0

3 Answers 3

32

mkdir accepts multiple path arguments:

mkdir -p -- a/foo b/bar a/baz
2
  • 1
    What does -- mean? Commented Jan 17, 2017 at 22:28
  • 1
    @user3142695 End of options (e.g. -s/--some-thing) and only (positional) arguments from now on. See also unix.stackexchange.com/q/11376/117599 It's not strictly necessary here, I just added it to signify further that those are multiple positional arguments.
    – phk
    Commented Jan 17, 2017 at 22:29
17

To add to the above answers you can also do (in csh, tcsh, ksh, bash, zsh, fish, yash -o brace-expand):

mkdir -p /path/{to,a}/{lot,of}/directories
5
  • 3
    On bash and similar shells supporting that particular feature (brace expansion) that is. For more information, see wiki.bash-hackers.org/syntax/expansion/brace
    – phk
    Commented Jan 17, 2017 at 17:25
  • 1
    @phk, you mean in csh and similar shells supporting that particular feature (that comes from csh (late 70s)). Commented Jan 17, 2017 at 17:29
  • Dash being the most common current shell that doesn't support it. Bash, ZSH, and csh do. Commented Jan 17, 2017 at 17:32
  • @StéphaneChazelas Oops. BTW, does something like caniuse.com for shells exist? (BTW, I should have added to my previous comment "For more information on its implementation in bash,")
    – phk
    Commented Jan 17, 2017 at 17:32
  • rc/es don't support it either but have a similar feature with mkdir /path/^(to some)^/directories Commented Jan 17, 2017 at 17:38
7

Reading the man page is always a good place to start.

The -p flag will create the required intermediate directories on the path.

2
  • You know even though it doesn't 'technically answer' the particular it's a very good point; you have to read the man pages as well as do - and type it out yourself helps you memorise it - if you really want to learn. Otherwise it's just a custom can of scripts for you (and in that case it may very well be a can of worms).
    – Pryftan
    Commented Aug 10, 2018 at 22:37
  • ...the man page (should) also tell you exactly how the implementation on the machine in front of you works - which may be different than the implementation of a random stranger from 5+ years ago
    – symcbean
    Commented Feb 9 at 10:32

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .