如何在一个目录中一次创建多个目录?

Ste*_*ine 25 linux command-line

我知道使用 mkdir 我可以mkdir A B C D E F创建每个目录。如何在不输入每个字母或数字的情况下创建目录 AZ 或 1-100?

rcr*_*ley 72

{}语法是不依赖于猛砸语法for结构。

mkdir {A..Z}
Run Code Online (Sandbox Code Playgroud)

本身就足够了。

http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion

  • 哦,太壮观了。这是一个更好的答案 (5认同)
  • +1 美感,+1 风格,+1 [rcrowley](http://unix.stackexchange.com/users/506/rcrowley) (5认同)

Mic*_*zek 19

使用for循环可能最简单:

for char in {A..Z}; do
    mkdir $char
done

for num in {1..100}; do
    mkdir $num
done
Run Code Online (Sandbox Code Playgroud)

不过你至少需要 bash 3.0;否则你必须使用类似的东西seq


Den*_*son 8

您还可以进行更复杂的组合(尝试使用echo而不是这些组合,mkdir以便之后没有清理):

相比

$ 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
Run Code Online (Sandbox Code Playgroud)

$ 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
Run Code Online (Sandbox Code Playgroud)

如果您有 Bash 4,请尝试

$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010
Run Code Online (Sandbox Code Playgroud)

$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
Run Code Online (Sandbox Code Playgroud)


小智 7

在 Linux 上,您可以使用“seq”命令生成数字序列,但这并不存在于所有 Unix 系统上。例如生成从 1 到 100 的目录:

mkdir `seq 1 100`
Run Code Online (Sandbox Code Playgroud)

虽然您当然可以使用 shell utils 创建目录 A 到 Z:

seq 65 90 \
    | while read foo; do printf "%b\n" `printf '\\\\x%x\n' $foo`; done \
    | xargs mkdir
Run Code Online (Sandbox Code Playgroud)

使用 Perl 可能没那么难看:

perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'
Run Code Online (Sandbox Code Playgroud)