How do I make multiple directories at once in a directory?
up vote
25
down vote
favorite
I know with mkdir I can do mkdir A B C D E F
to create each directory. How do I create directories A-Z or 1-100 with out typing in each letter or number?
linux command-line
add a comment |
up vote
25
down vote
favorite
I know with mkdir I can do mkdir A B C D E F
to create each directory. How do I create directories A-Z or 1-100 with out typing in each letter or number?
linux command-line
add a comment |
up vote
25
down vote
favorite
up vote
25
down vote
favorite
I know with mkdir I can do mkdir A B C D E F
to create each directory. How do I create directories A-Z or 1-100 with out typing in each letter or number?
linux command-line
I know with mkdir I can do mkdir A B C D E F
to create each directory. How do I create directories A-Z or 1-100 with out typing in each letter or number?
linux command-line
linux command-line
asked Aug 18 '10 at 1:33
Steve Burdine
3,44651919
3,44651919
add a comment |
add a comment |
6 Answers
6
active
oldest
votes
up vote
17
down vote
accepted
It's probably easiest to just use a for
loop:
for char in {A..Z}; do
mkdir $char
done
for num in {1..100}; do
mkdir $num
done
You need at least bash 3.0 though; otherwise you have to use something like seq
1
Michael thanks! being curious I also tried it adding test in front of $char for char in {A..Z}; do mkdir test$char done which gave me directories test[A-Z], always good to learn
– Steve Burdine
Aug 18 '10 at 1:48
One thing to keep in mind is how your file names will be sorted when you list them or use them with wildcards like *. '11' will sort before '2'. This can be avoided if you arrange for all the numbers to be the same length with leading zeros. Dennis Williams shows how to do that in bash 4, but you can code your script to do it if you don't have bash 4.
– Joe
Dec 11 '11 at 6:45
add a comment |
up vote
69
down vote
The {}
syntax is Bash syntax not tied to the for
construct.
mkdir {A..Z}
is sufficient all by itself.
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
4
Oh, that's spectacular. This is a much better answer
– Michael Mrozek♦
Aug 18 '10 at 1:58
1
I didn't know this, great tip!
– invert
Aug 18 '10 at 9:34
5
+1 for beauty, +1 for style, +1 for rcrowley
– Stefan
Sep 16 '10 at 10:02
+500 bounty from me.
– George Chalhoub
Dec 24 '15 at 17:41
This is awesome! just used it:mkdir -p ./logs-{1..5}
– Pranav 웃
Jan 17 '16 at 6:22
add a comment |
up vote
8
down vote
You can also do more complex combinations (try these with echo
instead of mkdir
so there's no cleanup afterwards):
Compare
$ echo pre-{{F..G},{3..4},{m..n}}-post
pre-F-post pre-G-post pre-3-post pre-4-post pre-m-post pre-n-post
to
$ echo pre-{F..G}{3..4}{m..n}-post
pre-F3m-post pre-F3n-post pre-F4m-post pre-F4n-post pre-G3m-post pre-G3n-post
pre-G4m-post pre-G4n-post
If you have Bash 4, try
$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010
and
$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
add a comment |
up vote
7
down vote
On Linux you can generate sequences of digits with the "seq" command, but this doesn't exist on all Unix systems. For example to generate directories from 1 to 100:
mkdir `seq 1 100`
While you can certainly make directories A to Z with shell utils:
seq 65 90
| while read foo; do printf "%bn" `printf '\\x%xn' $foo`; done
| xargs mkdir
It's probably a lot less ugly to just use Perl:
perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'
add a comment |
up vote
-1
down vote
mkdir direct{1..3}
will result in mkdir direct1 direct2 direct3
and so on . Same for {a..z}
New contributor
2
this is a reiteration of three existing answers and the one that I already commented on
– Jeff Schaller
yesterday
add a comment |
up vote
-2
down vote
mkdir {A..Z}
mkdir {0..100}
mkdir test_{A..Z}
and so on.
New contributor
I do not get it
– Pierre.Vriens
2 days ago
1
this has already been covered
– Jeff Schaller
2 days ago
add a comment |
6 Answers
6
active
oldest
votes
6 Answers
6
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
17
down vote
accepted
It's probably easiest to just use a for
loop:
for char in {A..Z}; do
mkdir $char
done
for num in {1..100}; do
mkdir $num
done
You need at least bash 3.0 though; otherwise you have to use something like seq
1
Michael thanks! being curious I also tried it adding test in front of $char for char in {A..Z}; do mkdir test$char done which gave me directories test[A-Z], always good to learn
– Steve Burdine
Aug 18 '10 at 1:48
One thing to keep in mind is how your file names will be sorted when you list them or use them with wildcards like *. '11' will sort before '2'. This can be avoided if you arrange for all the numbers to be the same length with leading zeros. Dennis Williams shows how to do that in bash 4, but you can code your script to do it if you don't have bash 4.
– Joe
Dec 11 '11 at 6:45
add a comment |
up vote
17
down vote
accepted
It's probably easiest to just use a for
loop:
for char in {A..Z}; do
mkdir $char
done
for num in {1..100}; do
mkdir $num
done
You need at least bash 3.0 though; otherwise you have to use something like seq
1
Michael thanks! being curious I also tried it adding test in front of $char for char in {A..Z}; do mkdir test$char done which gave me directories test[A-Z], always good to learn
– Steve Burdine
Aug 18 '10 at 1:48
One thing to keep in mind is how your file names will be sorted when you list them or use them with wildcards like *. '11' will sort before '2'. This can be avoided if you arrange for all the numbers to be the same length with leading zeros. Dennis Williams shows how to do that in bash 4, but you can code your script to do it if you don't have bash 4.
– Joe
Dec 11 '11 at 6:45
add a comment |
up vote
17
down vote
accepted
up vote
17
down vote
accepted
It's probably easiest to just use a for
loop:
for char in {A..Z}; do
mkdir $char
done
for num in {1..100}; do
mkdir $num
done
You need at least bash 3.0 though; otherwise you have to use something like seq
It's probably easiest to just use a for
loop:
for char in {A..Z}; do
mkdir $char
done
for num in {1..100}; do
mkdir $num
done
You need at least bash 3.0 though; otherwise you have to use something like seq
answered Aug 18 '10 at 1:37
Michael Mrozek♦
59.9k28187208
59.9k28187208
1
Michael thanks! being curious I also tried it adding test in front of $char for char in {A..Z}; do mkdir test$char done which gave me directories test[A-Z], always good to learn
– Steve Burdine
Aug 18 '10 at 1:48
One thing to keep in mind is how your file names will be sorted when you list them or use them with wildcards like *. '11' will sort before '2'. This can be avoided if you arrange for all the numbers to be the same length with leading zeros. Dennis Williams shows how to do that in bash 4, but you can code your script to do it if you don't have bash 4.
– Joe
Dec 11 '11 at 6:45
add a comment |
1
Michael thanks! being curious I also tried it adding test in front of $char for char in {A..Z}; do mkdir test$char done which gave me directories test[A-Z], always good to learn
– Steve Burdine
Aug 18 '10 at 1:48
One thing to keep in mind is how your file names will be sorted when you list them or use them with wildcards like *. '11' will sort before '2'. This can be avoided if you arrange for all the numbers to be the same length with leading zeros. Dennis Williams shows how to do that in bash 4, but you can code your script to do it if you don't have bash 4.
– Joe
Dec 11 '11 at 6:45
1
1
Michael thanks! being curious I also tried it adding test in front of $char for char in {A..Z}; do mkdir test$char done which gave me directories test[A-Z], always good to learn
– Steve Burdine
Aug 18 '10 at 1:48
Michael thanks! being curious I also tried it adding test in front of $char for char in {A..Z}; do mkdir test$char done which gave me directories test[A-Z], always good to learn
– Steve Burdine
Aug 18 '10 at 1:48
One thing to keep in mind is how your file names will be sorted when you list them or use them with wildcards like *. '11' will sort before '2'. This can be avoided if you arrange for all the numbers to be the same length with leading zeros. Dennis Williams shows how to do that in bash 4, but you can code your script to do it if you don't have bash 4.
– Joe
Dec 11 '11 at 6:45
One thing to keep in mind is how your file names will be sorted when you list them or use them with wildcards like *. '11' will sort before '2'. This can be avoided if you arrange for all the numbers to be the same length with leading zeros. Dennis Williams shows how to do that in bash 4, but you can code your script to do it if you don't have bash 4.
– Joe
Dec 11 '11 at 6:45
add a comment |
up vote
69
down vote
The {}
syntax is Bash syntax not tied to the for
construct.
mkdir {A..Z}
is sufficient all by itself.
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
4
Oh, that's spectacular. This is a much better answer
– Michael Mrozek♦
Aug 18 '10 at 1:58
1
I didn't know this, great tip!
– invert
Aug 18 '10 at 9:34
5
+1 for beauty, +1 for style, +1 for rcrowley
– Stefan
Sep 16 '10 at 10:02
+500 bounty from me.
– George Chalhoub
Dec 24 '15 at 17:41
This is awesome! just used it:mkdir -p ./logs-{1..5}
– Pranav 웃
Jan 17 '16 at 6:22
add a comment |
up vote
69
down vote
The {}
syntax is Bash syntax not tied to the for
construct.
mkdir {A..Z}
is sufficient all by itself.
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
4
Oh, that's spectacular. This is a much better answer
– Michael Mrozek♦
Aug 18 '10 at 1:58
1
I didn't know this, great tip!
– invert
Aug 18 '10 at 9:34
5
+1 for beauty, +1 for style, +1 for rcrowley
– Stefan
Sep 16 '10 at 10:02
+500 bounty from me.
– George Chalhoub
Dec 24 '15 at 17:41
This is awesome! just used it:mkdir -p ./logs-{1..5}
– Pranav 웃
Jan 17 '16 at 6:22
add a comment |
up vote
69
down vote
up vote
69
down vote
The {}
syntax is Bash syntax not tied to the for
construct.
mkdir {A..Z}
is sufficient all by itself.
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
The {}
syntax is Bash syntax not tied to the for
construct.
mkdir {A..Z}
is sufficient all by itself.
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
edited Aug 18 '10 at 1:58
answered Aug 18 '10 at 1:49
rcrowley
997166
997166
4
Oh, that's spectacular. This is a much better answer
– Michael Mrozek♦
Aug 18 '10 at 1:58
1
I didn't know this, great tip!
– invert
Aug 18 '10 at 9:34
5
+1 for beauty, +1 for style, +1 for rcrowley
– Stefan
Sep 16 '10 at 10:02
+500 bounty from me.
– George Chalhoub
Dec 24 '15 at 17:41
This is awesome! just used it:mkdir -p ./logs-{1..5}
– Pranav 웃
Jan 17 '16 at 6:22
add a comment |
4
Oh, that's spectacular. This is a much better answer
– Michael Mrozek♦
Aug 18 '10 at 1:58
1
I didn't know this, great tip!
– invert
Aug 18 '10 at 9:34
5
+1 for beauty, +1 for style, +1 for rcrowley
– Stefan
Sep 16 '10 at 10:02
+500 bounty from me.
– George Chalhoub
Dec 24 '15 at 17:41
This is awesome! just used it:mkdir -p ./logs-{1..5}
– Pranav 웃
Jan 17 '16 at 6:22
4
4
Oh, that's spectacular. This is a much better answer
– Michael Mrozek♦
Aug 18 '10 at 1:58
Oh, that's spectacular. This is a much better answer
– Michael Mrozek♦
Aug 18 '10 at 1:58
1
1
I didn't know this, great tip!
– invert
Aug 18 '10 at 9:34
I didn't know this, great tip!
– invert
Aug 18 '10 at 9:34
5
5
+1 for beauty, +1 for style, +1 for rcrowley
– Stefan
Sep 16 '10 at 10:02
+1 for beauty, +1 for style, +1 for rcrowley
– Stefan
Sep 16 '10 at 10:02
+500 bounty from me.
– George Chalhoub
Dec 24 '15 at 17:41
+500 bounty from me.
– George Chalhoub
Dec 24 '15 at 17:41
This is awesome! just used it:
mkdir -p ./logs-{1..5}
– Pranav 웃
Jan 17 '16 at 6:22
This is awesome! just used it:
mkdir -p ./logs-{1..5}
– Pranav 웃
Jan 17 '16 at 6:22
add a comment |
up vote
8
down vote
You can also do more complex combinations (try these with echo
instead of mkdir
so there's no cleanup afterwards):
Compare
$ echo pre-{{F..G},{3..4},{m..n}}-post
pre-F-post pre-G-post pre-3-post pre-4-post pre-m-post pre-n-post
to
$ echo pre-{F..G}{3..4}{m..n}-post
pre-F3m-post pre-F3n-post pre-F4m-post pre-F4n-post pre-G3m-post pre-G3n-post
pre-G4m-post pre-G4n-post
If you have Bash 4, try
$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010
and
$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
add a comment |
up vote
8
down vote
You can also do more complex combinations (try these with echo
instead of mkdir
so there's no cleanup afterwards):
Compare
$ echo pre-{{F..G},{3..4},{m..n}}-post
pre-F-post pre-G-post pre-3-post pre-4-post pre-m-post pre-n-post
to
$ echo pre-{F..G}{3..4}{m..n}-post
pre-F3m-post pre-F3n-post pre-F4m-post pre-F4n-post pre-G3m-post pre-G3n-post
pre-G4m-post pre-G4n-post
If you have Bash 4, try
$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010
and
$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
add a comment |
up vote
8
down vote
up vote
8
down vote
You can also do more complex combinations (try these with echo
instead of mkdir
so there's no cleanup afterwards):
Compare
$ echo pre-{{F..G},{3..4},{m..n}}-post
pre-F-post pre-G-post pre-3-post pre-4-post pre-m-post pre-n-post
to
$ echo pre-{F..G}{3..4}{m..n}-post
pre-F3m-post pre-F3n-post pre-F4m-post pre-F4n-post pre-G3m-post pre-G3n-post
pre-G4m-post pre-G4n-post
If you have Bash 4, try
$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010
and
$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
You can also do more complex combinations (try these with echo
instead of mkdir
so there's no cleanup afterwards):
Compare
$ echo pre-{{F..G},{3..4},{m..n}}-post
pre-F-post pre-G-post pre-3-post pre-4-post pre-m-post pre-n-post
to
$ echo pre-{F..G}{3..4}{m..n}-post
pre-F3m-post pre-F3n-post pre-F4m-post pre-F4n-post pre-G3m-post pre-G3n-post
pre-G4m-post pre-G4n-post
If you have Bash 4, try
$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010
and
$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
edited Aug 19 '10 at 23:30
answered Aug 19 '10 at 0:44
Dennis Williamson
5,32812232
5,32812232
add a comment |
add a comment |
up vote
7
down vote
On Linux you can generate sequences of digits with the "seq" command, but this doesn't exist on all Unix systems. For example to generate directories from 1 to 100:
mkdir `seq 1 100`
While you can certainly make directories A to Z with shell utils:
seq 65 90
| while read foo; do printf "%bn" `printf '\\x%xn' $foo`; done
| xargs mkdir
It's probably a lot less ugly to just use Perl:
perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'
add a comment |
up vote
7
down vote
On Linux you can generate sequences of digits with the "seq" command, but this doesn't exist on all Unix systems. For example to generate directories from 1 to 100:
mkdir `seq 1 100`
While you can certainly make directories A to Z with shell utils:
seq 65 90
| while read foo; do printf "%bn" `printf '\\x%xn' $foo`; done
| xargs mkdir
It's probably a lot less ugly to just use Perl:
perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'
add a comment |
up vote
7
down vote
up vote
7
down vote
On Linux you can generate sequences of digits with the "seq" command, but this doesn't exist on all Unix systems. For example to generate directories from 1 to 100:
mkdir `seq 1 100`
While you can certainly make directories A to Z with shell utils:
seq 65 90
| while read foo; do printf "%bn" `printf '\\x%xn' $foo`; done
| xargs mkdir
It's probably a lot less ugly to just use Perl:
perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'
On Linux you can generate sequences of digits with the "seq" command, but this doesn't exist on all Unix systems. For example to generate directories from 1 to 100:
mkdir `seq 1 100`
While you can certainly make directories A to Z with shell utils:
seq 65 90
| while read foo; do printf "%bn" `printf '\\x%xn' $foo`; done
| xargs mkdir
It's probably a lot less ugly to just use Perl:
perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'
answered Aug 18 '10 at 1:46
dhd
1211
1211
add a comment |
add a comment |
up vote
-1
down vote
mkdir direct{1..3}
will result in mkdir direct1 direct2 direct3
and so on . Same for {a..z}
New contributor
2
this is a reiteration of three existing answers and the one that I already commented on
– Jeff Schaller
yesterday
add a comment |
up vote
-1
down vote
mkdir direct{1..3}
will result in mkdir direct1 direct2 direct3
and so on . Same for {a..z}
New contributor
2
this is a reiteration of three existing answers and the one that I already commented on
– Jeff Schaller
yesterday
add a comment |
up vote
-1
down vote
up vote
-1
down vote
mkdir direct{1..3}
will result in mkdir direct1 direct2 direct3
and so on . Same for {a..z}
New contributor
mkdir direct{1..3}
will result in mkdir direct1 direct2 direct3
and so on . Same for {a..z}
New contributor
edited yesterday
Jesse_b
11.4k23063
11.4k23063
New contributor
answered yesterday
Lionel AVOGNON
9
9
New contributor
New contributor
2
this is a reiteration of three existing answers and the one that I already commented on
– Jeff Schaller
yesterday
add a comment |
2
this is a reiteration of three existing answers and the one that I already commented on
– Jeff Schaller
yesterday
2
2
this is a reiteration of three existing answers and the one that I already commented on
– Jeff Schaller
yesterday
this is a reiteration of three existing answers and the one that I already commented on
– Jeff Schaller
yesterday
add a comment |
up vote
-2
down vote
mkdir {A..Z}
mkdir {0..100}
mkdir test_{A..Z}
and so on.
New contributor
I do not get it
– Pierre.Vriens
2 days ago
1
this has already been covered
– Jeff Schaller
2 days ago
add a comment |
up vote
-2
down vote
mkdir {A..Z}
mkdir {0..100}
mkdir test_{A..Z}
and so on.
New contributor
I do not get it
– Pierre.Vriens
2 days ago
1
this has already been covered
– Jeff Schaller
2 days ago
add a comment |
up vote
-2
down vote
up vote
-2
down vote
mkdir {A..Z}
mkdir {0..100}
mkdir test_{A..Z}
and so on.
New contributor
mkdir {A..Z}
mkdir {0..100}
mkdir test_{A..Z}
and so on.
New contributor
New contributor
answered 2 days ago
Avognon Lionel
1
1
New contributor
New contributor
I do not get it
– Pierre.Vriens
2 days ago
1
this has already been covered
– Jeff Schaller
2 days ago
add a comment |
I do not get it
– Pierre.Vriens
2 days ago
1
this has already been covered
– Jeff Schaller
2 days ago
I do not get it
– Pierre.Vriens
2 days ago
I do not get it
– Pierre.Vriens
2 days ago
1
1
this has already been covered
– Jeff Schaller
2 days ago
this has already been covered
– Jeff Schaller
2 days ago
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f636%2fhow-do-i-make-multiple-directories-at-once-in-a-directory%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown