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


23

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

例えば、

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

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


「排他的」とはどういう意味ですか?コンテキストでは意味をなさないため、おそらく間違った言葉を使用したでしょう。
ジル「SO-悪であるのをやめる」

つまり、ファイルに同じコンテンツを含めることはできません。
ジョアン・ホセ

だから、排他的はユニークを意味するでしょう。
somehume

回答:


25

他の要件はないため、次のように機能します。

#! /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
これにはbash、やなど$((…))、さまざまな理由が必要です$RANDOM。でも、$(…)中には存在しない可能性がありますすべてのシェル。
G-Manは「Reinstate Monica」と言います

1
@ G-男は、どのような場合には、これらの機能のどれもに固有のものでないbashも彼らが発信なかったbash{1..1000}から来ているzshfor n in...; doneと変数の展開は、Bourneシェルから来て、$(...)$((...))および$RANDOM kshのが来ます)。POSIXではない機能は{1..1000}$RANDOMおよび/dev/urandomです。
ステファンシャゼラス

1
1..1000を一定の幅にしたい場合"%04d"は、その場合に必要なもの、bashまたはnoでzsh実行できるもの{0001..1000}printf
dave_thompson_085

追加機能:これらのファイルを、ランダムに名前が付けられた多くのネストされたサブディレクトリに広げる方法が必要です。
STU

10

ばらつきseqxargsddshuf

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 1001から10までの数字のシーケンスを出力します

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

dd if=/dev/urandom of=file.% bs=$(shuf ...) count=1024feededファイル作成は/ dev / urandomの1024個のブロックサイズとブロックを

shuf -i1-10 -n11から10までのランダムな値


これは正確にワットですか?
saruftw

1
@ saru95の説明が追加されました。
FloHimself

これにより、ランダムなサイズの10個のファイルが作成されます。「10」を必要なファイルの数に変更します。
ネイ

2

次のようなことができます:

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

これを試してみましたが、うまくいきませんでした。パラメーターを説明することもできます。:)
ジョアン・ホセ

非常に速いthx @rahul
BGブルーノ

2

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.