回答:
他の要件はないため、次のように機能します。
#! /bin/bash
for n in {1..1000}; do
dd if=/dev/urandom of=file$( printf %03d "$n" ).bin bs=1 count=$(( RANDOM + 1024 ))
done
(これにはbash
少なくともが必要です{1..1000}
)。
bash
、やなど$((…))
、さまざまな理由が必要です$RANDOM
。でも、$(…)
中には存在しない可能性がありますすべてのシェル。
bash
も彼らが発信なかったbash
({1..1000}
から来ているzsh
、for n in...; done
と変数の展開は、Bourneシェルから来て、$(...)
、$((...))
および$RANDOM
kshのが来ます)。POSIXではない機能は{1..1000}
、$RANDOM
および/dev/urandom
です。
"%04d"
は、その場合に必要なもの、bash
またはnoでzsh
実行できるもの{0001..1000}
printf
ばらつきseq
、xargs
、dd
とshuf
:
seq -w 1 10 | xargs -n1 -I% sh -c 'dd if=/dev/urandom of=file.% bs=$(shuf -i1-10 -n1) count=1024'
コメントごとに要求される説明:
seq -w 1 10
01から10までの数字のシーケンスを出力します
xargs -n1 -I%
sh -c 'dd ... % ...'
シーケンス番号ごとにコマンドを実行し、%をそれに置き換えます
dd if=/dev/urandom of=file.% bs=$(shuf ...) count=1024
feededファイル作成は/ dev / urandomので1024個のブロックサイズとブロックを
shuf -i1-10 -n1
1から10までのランダムな値