ランダムコンテンツで多数のファイルを作成する

ランダムコンテンツで多数のファイルを作成する

少なくとも1KBのランダムデータを含む複数(数千)のファイルを生成するコマンドを探しています。

例えば、

Name            size
file1.01        2K
file2.02        3K
file3.03        5K
etc.

そのようなファイルをたくさん作成する方法は?

答え1

他の要件がないので、以下が機能します。

#! /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})。

答え2

seqAND、xargsANDddの変形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次からファイルを生成する/dev/urandomそして1024ブロックサイズは

shuf -i1-10 -n1任意の値1到着10

答え3

これは単一のパイプを使用し、合理的に速いように見えますが、すべてのファイルのサイズが同じであるという制限があります。

dd if=/dev/urandom bs=1024 count=10240 | split -a 4 -b 1k - file.

説明:ddを使用して10240 * 1024バイトのデータを生成します。これをそれぞれ1kサイズの10240個の別々のファイルに分割します(名前は「file.aaaa」から「file.zzzz」までです)。

答え4

次のことができます。

#!/bin/bash
filecount=0
while [ $filecount -lt 10000 ] ; do
    filesize=$RANDOM
    filesize=$(($filesize+1024))
    base64 /dev/urandom | 
    head -c "$filesize" > /tmp/file${filecount}.$RANDOM
    ((filecount++))
done

関連情報