web-dev-qa-db-ja.com

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

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

例えば、

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

このように多くのファイルを作成するにはどうすればよいですか?

23
charles

他の要件がないため、次のようなものが機能するはずです。

#! /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}に必要です)。

28
lcd047

seqxargsddおよび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_は1から1までの一連の数値を出力します

_xargs -n1 -I%_は、シーケンス番号ごとにコマンド_sh -c 'dd ... % ...'_を実行し、をそれに置き換えます

dd if=/dev/urandom of=file.% bs=$(shuf ...) count=1024/ dev/urandomからフィードされたファイルを作成します1024ブロックサイズのブロック

_shuf -i1-10 -n1_ 1から1までのランダムな値

10
FloHimself

これは単一のパイプラインを使用し、かなり高速に見えますが、すべてのファイルが同じサイズであるという制限があります

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

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

3
Ed Randall

あなたはこのようなことをすることができます:

#!/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
2
rahul