コマンドラインmkdir
とseq
。
私が使用している場合:
mkdir name{`seq -s , 1 5`}
結果はディレクトリです。name{1,2,3,4,5}
どのコマンドを使用する必要がありますか?
答え1
seq 1 42 | mkdir name{1..5}
あるいは、人生、宇宙、そしてすべてに対する答えが必要ない場合は、あきらめ、seq
bashの中かっこを拡張して作業自体を実行するようにしてください。
mkdir name{1..5}
ただし、使用する必要がある場合はseq
宿題なので、次のようにします。
mkdir $(seq -f "name%d" 5)
答え2
何らかの理由で望ましくない場合支柱の拡張を使用する(下記参照) 以下を考慮することができます。
seq 5 | xargs -I N mkdir nameN
これによりname1
、、、name2
とname3
がname4
生成されますname5
。これは、シェルが中括弧拡張をサポートしていない場合にもbash
機能します(しかしサポートします)。このxargs
コマンドはコマンドをビルドして実行します。この特定のxargs
コマンドは同様のコマンドを実行しますmkdir nameN
が、N
入力されたすべての単語(パイプの入力seq
)を置き換えます。走っman xargs
たり読むこのページこの-I
オプションに関する追加情報。
宿題の場合、3番目のコマンド(xargs
)を使用できない可能性があります。しかし、「実生活」ではそのような制限がある可能性はほとんどありません。また、学習目的でこれを行う場合は、さまざまな状況で役立つ可能性のあるコマンドを学ぶ機会ですxargs
(まだわからない場合)。
次のシェルループを使用することもできます。Alex Pが提案したもの(for d in $(seq 5); do mkdir name$d; done
)。それfor
リング構文を使用$(
)
して実行コマンドの置き換え1 2 3 4 5
その後、リストを取得するには、次をseq
使用します。パラメータ拡張($d
)はmkdir
各コマンドのディレクトリ名を設定します。
これらの方法はすべて、スペースが含まれていないディレクトリ名に依存することに注意してください。ただし、スペースが含まれないように変更することはできます。
しかし、あなたはbash
次のように使用しています多くの殻、支える支柱の拡張。これでスクリプトが必要になることがあります。持ち運べるサポートされていないシェルの場合(例:dash
)。それが必要なものであれば、中かっこ拡張をまったく使用しないでください。そうでなければフォローするジェフ・シャラーがおすすめただ書いてくださいmkdir name{1..5}
。