1つのディレクトリに同時に複数のディレクトリを作成するには?

1つのディレクトリに同時に複数のディレクトリを作成するには?

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-拡張

答え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}

これにより、2106のサブディレクトリと27378の3番目のレベルのサブディレクトリを含む9つのディレクトリが作成されます。

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

関連情報