私はmkdirでmkdir A B C D E F
各ディレクトリを作成します。各文字または数字を入力せずにディレクトリA〜Zまたは1〜100を作成するにはどうすればよいですか。
for
ループを使用するのがおそらく最も簡単です。
for char in {A..Z}; do
mkdir $char
done
for num in {1..100}; do
mkdir $num
done
ただし、少なくともbash 3.0が必要です。それ以外の場合は、seq
のようなものを使用する必要があります
{}
構文は、for
構成に関連付けられていないBash構文です。
mkdir {A..Z}
それだけで十分です。
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
より複雑な組み合わせを実行することもできます(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
Linuxでは、「seq」コマンドを使用して数字のシーケンスを生成できますが、これはすべてのUnixシステムに存在するわけではありません。たとえば、1から100までのディレクトリを生成するには:
mkdir `seq 1 100`
Shell utilsを使用してディレクトリAからZを確実に作成できますが、
seq 65 90 \
| while read foo; do printf "%b\n" `printf '\\\\x%x\n' $foo`; done \
| xargs mkdir
単にPerlを使用するほうが、見苦しくないでしょう。
Perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'