mkdir
を使用して多くのディレクトリを作成したい 。各ディレクトリ名は、プレフィックス(文字列)とインデックス(整数)で構成されます。プレフィックスを「s」にし、インデックスを1〜50の範囲にしたいとします。これは、次のタイトルのディレクトリを作成したいことを意味します。
s1
、s2
、…、s49
、s50
mkdir
を使用してこれを自動的に行う方法はありますか? ?お時間をいただきありがとうございます。
承認された回答:
これはシェルスクリプトで行うことができます。
純粋なsh–これはPOSIX以前のBourneシェルでも機能します:
n=1;
max=50;
while [ "$n" -le "$max" ]; do
mkdir "s$n"
n=`expr "$n" + 1`;
done
多数のディレクトリを作成する場合は、スクリプトをmkdir
の1回の呼び出しに減らすことで、スクリプトを高速化できます。 また、テストと演算にシェルビルトインを使用します。このように:
n=1
max=50
set -- # this sets [email protected] [the argv array] to an empty list.
while [ "$n" -le "$max" ]; do
set -- "[email protected]" "s$n" # this adds s$n to the end of [email protected]
n=$(( $n + 1 ));
done
mkdir "[email protected]"
Zsh、ksh93、またはbashを使用すると、これがはるかに簡単になりますが、これはmkdir
に組み込まれていないことを指摘しておく必要があります。 他のシェルでは機能しない場合があります。大規模なケースでは、コマンドに渡される可能性のある引数の数または合計サイズの制限によっても影響を受ける可能性があります。
mkdir s{1..50}