我知道使用 mkdir 我可以mkdir A B C D E F
创建每个目录。如何创建目录 AZ 或 1-100 而无需输入每个字母或数字?
答案1
语法{}
是 Bash 语法,与结构无关for
。
mkdir {A..Z}
本身就足够了。
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
答案2
使用for
循环可能是最简单的:
for char in {A..Z}; do
mkdir $char
done
for num in {1..100}; do
mkdir $num
done
不过你至少需要 bash 3.0;否则你必须使用类似的东西seq
答案3
您还可以进行更复杂的组合(尝试使用这些组合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
到
$ 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
如果您有 Bash 4,请尝试
$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010
和
$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
答案4
YAA(又一个答案;)
在下面巴什,你可以做很多事情!简单示例:
mkdir -p /tmp/mkdirdemo/1stLev_{R..T}{0..2}/2ndL_{one,two,three}_{a..c}{a..z}/3rd_{30..42}
这将创建 9 个目录,其中包含 2106 个子目录和 27378 个三级子目录。
ls -d /tmp/mkdirdemo/1stLev_*/*/*|wc -l
27378
find /tmp/mkdirdemo -mindepth 3 -type d | wc -l
27378
$ find /tmp/mkdirdemo -mindepth 3 -type d|sort|sed -ne '1,2p;27377,$p;3s/.*/.../p'
/tmp/mkdirdemo/1stLev_R0/2ndL_one_aa/3rd_30
/tmp/mkdirdemo/1stLev_R0/2ndL_one_aa/3rd_31
...
/tmp/mkdirdemo/1stLev_T2/2ndL_two_cz/3rd_41
/tmp/mkdirdemo/1stLev_T2/2ndL_two_cz/3rd_42