2013-06-11 3 views
7

Come posso creare più file (Più di 20k, ho bisogno di questi file per eseguire un test per la sincronizzazione) con dati casuali in OS X? Ho usato una domanda precedentemente risposto (How Can I Create Multiple Files of Random Data?), che ha suggerito di usare qualcosa comeCome creare più file con dati casuali con bash

dd if=/dev/random bs=1 count=40000 | split -b 2 

Ma usando che mi dà un errore che dice troppe files.Any altro modo posso creare un ciclo che creerà i file con tutti i dati casuali ?

risposta

17

È possibile farlo con un guscio for ciclo:

for i in {1..20000}; do dd if=/dev/urandom bs=1 count=1 of=file$i; done 

Regolare count e bs se necessario per rendere i file delle dimensioni che ti interessano. Si noti che sono passato a /dev/urandom per impedire il blocco.

È possibile aggiungere un po 'di >/dev/null 2>&1 per abbassarlo.

+0

Grazie mille, questo ha funzionato! Non sono ancora sicuro di cosa voglia contare in questo script? (Sono nuovo allo scripting) – bachkoi32

+1

'count' è un argomento per' dd'. ['man dd'] (https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/dd.1.html) per ulteriori informazioni. –

+1

... in particolare, 'count = 1' ti darà un blocco di output, e' bs = 1' ti darà una dimensione di blocco di uno - quindi un singolo byte ogni volta, piuttosto che 2 byte nel tuo esempio. –

4

Non è sicuro se si dispone di un file requisiti di denominazione, ma forse questo:

for x in {1..20000}; do 
    dd if=/dev/random of=test$x.dat bs=10000 count=4 
done 
5

Il motivo per il vostro approccio non funziona è che il suffisso di default per split (2 caratteri alfabetici) non è un grande abbastanza spazio dei nomi per ventimila file. Se si aggiunge un paio di opzioni:

dd if=/dev/random bs=1 count=40000 | split -b 2 -d -a 5 

(dove -d significa "uso cifre, caratteri non alfabetici, per il suffisso" e -a 5 significa "uso suffissi di lunghezza 5"), che dovrebbe funzionare bene - I testato con /dev/urandom (per velocità) su una macchina GNU/Linux senza problemi.

Si noti che questo è molto più veloce dell'approccio for-loop delle altre risposte (2,5 secondi contro 43 secondi per la risposta di Carl Norum sulla mia macchina).