Linuxでシェルを使用していくつかのフォルダを作成したいと思います。
フォルダ名は次のようになります。
1-10000
10001-20000
20001-30000
30001-40000
等々。
この目的のためにどのコマンドを使用する必要がありますか?
単純なbashスクリプト
#!/bin/bash
mkdir 1-10000
for i in {1..5}
do
mkdir ${i}001-$(($i+1))000
done
zshで動作し、bashでも動作するはずです。
min=1; max=0; while ((max<40000)); do
max=$((min-1+10000));
mkdir $min-$max;
min=$((max+1))
done
これはあなたの問題を解決するはずです
for i in $(seq 0 10000 100000)
do
mkdir $(expr $i + 1)-$(expr $i + 10000)
done
以下は、匿名ユーザーから提案された改善です。両方のバージョンがアーカイブされるように、(検証なしで)別の段落として追加しました。
for i in $(seq 0 10000 100000)
do
mkdir $((i + 1))-$((i + 10000))
done
これをbashでテストしました:
#!/bin/bash
n=1 # Your starting number
mx=40000 # Your max number
inc=10000 # The number of entries you want in each group
while [ $n -lt $mx ]; do
mkdir ${n}'-'$[$n+$inc-1]
n=$[$n+$inc]
done
見るman mkdir
UNIXでディレクトリを作成するために使用する必要があります。これは宿題だと思います。また、これまでに試したことは何も投稿していません。
シェルスクリプトを探している場合は、入力として指定した行を取得し、カンマ区切りの値をループしてから、値を別のループ内で分割し、分割後の最大値と比較して、mkdirを使用してディレクトリを作成してください。 .algorithmは次のようになります。
for each 1-10000,10001-20000,20001-30000,30001-40000
split value1-value2 into value1 and value2
for i=value1 and i <=value2
mkdir $i
zsh
新しい{start..end..step}
シーケンスジェネレータを使用する別の方法は次のとおりです。
start=1
end=40000
step=10000
paste <(print -l {$start..$end..$step}) \
<(print -l {$((start + $step - 1))..$end..$step}) \
| while read n1 n2; do
mkdir $n1-$n2
done