ディレクトリに複数のディレクトリを一度に作成するにはどうすればよいですか?


25

私はmkdirでmkdir A B C D E F各ディレクトリを作成することができます。各文字または数字を入力せずに、AZまたは1-100のディレクトリを作成するにはどうすればよいですか?

回答:


18

forループを使用するのがおそらく最も簡単です:

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

for num in {1..100}; do
    mkdir $num
done

ただし、少なくともbash 3.0が必要です。それ以外の場合は、次のようなものを使用する必要がありますseq


1
マイケルありがとう!興味があるので、{A..Z}のcharの$ charの前にテストを追加してみました。mkdir test $ char doneを実行し、ディレクトリtest [AZ]を
取得

留意すべきことの1つは、ファイル名をリストするとき、または*などのワイルドカードで使用するときにファイル名がどのようにソートされるかです。「11」は「2」の前にソートされます。これは、すべての数値が同じ長さで先頭にゼロを配置するようにすれば回避できます。bashの4であることを行うにはどのようにデニス・ウィリアムスショーが、あなたはbashの4を持っていない場合、あなたはそれを行うためのスクリプトを記述することができます
ジョー・

71

{}構文は次のとおりに関連付けられていないバッシュの構文であるfor構築物。

mkdir {A..Z}

それだけで十分です。

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


5
ああ、それは壮観です。これははるかに良い答えです
マイケルMrozek

1
私はこれを知りませんでした、素晴らしいヒントです!
反転

5
美のための+1、スタイルのための+ 1、rcrowleyの
ステファン

私から+500バウンティ。
ジョージチャローブ

これはすごい!ちょうどそれを使用:mkdir -p ./logs-{1..5}
プラナフav

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

$ 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

7

Linuxでは、「seq」コマンドを使用して数字のシーケンスを生成できますが、これはすべてのUnixシステムに存在するわけではありません。たとえば、1〜100のディレクトリを生成するには:

mkdir `seq 1 100`

シェル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 $_ }'


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.