2

How can I create multiple nested directories in one command?

mkdir -p /just/one/dir

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

10

mkdir accepts multiple path arguments:

mkdir -p -- a/foo b/bar a/baz
  • What does -- mean? – user3142695 Jan 17 '17 at 22:28
  • @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 Jan 17 '17 at 22:29
7

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
  • 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 Jan 17 '17 at 17:25
  • 1
    @phk, you mean in csh and similar shells supporting that particular feature (that comes from csh (late 70s)). – Stéphane Chazelas Jan 17 '17 at 17:29
  • Dash being the most common current shell that doesn't support it. Bash, ZSH, and csh do. – Livinglifeback Jan 17 '17 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 Jan 17 '17 at 17:32
  • rc/es don't support it either but have a similar feature with mkdir /path/^(to some)^/directories – Stéphane Chazelas Jan 17 '17 at 17:38
1

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

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

  • 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 Aug 10 '18 at 22:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.