2013-06-11 16 views
7

Jak utworzyć wiele plików (więcej niż 20k, potrzebuję tych plików, aby uruchomić test do synchronizacji) z losowymi danymi w OS X? Użyłem wcześniej odpowiedział na pytanie (How Can I Create Multiple Files of Random Data?), które zalecane, aby użyć coś jakJak utworzyć wiele plików z losowymi danymi za pomocą bashu

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

Ale używając że daje mi błąd mówiąc zbyt wiele files.Any inny sposób mogę stworzyć pętlę, która będzie tworzyć pliki o dowolnej losowej danych ?

Odpowiedz

17

Można to zrobić za pomocą powłoki for pętli:

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

Regulacja count i bs jako niezbędne, aby pliki o rozmiarze Ci zależy. Zauważ, że zmieniono na /dev/urandom, aby zapobiec blokowaniu.

Możesz dodać trochę >/dev/null 2>&1, aby go wyciszyć.

+0

Dziękuję bardzo, to działało! Nadal nie jestem pewien, co oznacza licznik w tym skrypcie? (Jestem nowy w pisaniu skryptów) – bachkoi32

+1

'count' jest argumentem dla' dd'. ['man dd'] (https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/dd.1.html), aby uzyskać więcej informacji. –

+1

... w szczególności, 'count = 1' da ci jeden blok danych wyjściowych, a' bs = 1' da ci rozmiar bloku jednego - czyli jeden bajt za każdym razem, zamiast 2 bajty w twoim przykładzie. –

4

Nie wiem, czy masz jakieś wymagania nazewnictwa plików, ale być może w ten sposób:

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

Powodem Twoje podejście nie działa to, że domyślny przyrostek dla split (2 znaków alfabetycznych) nie jest duża wystarczająco dużo przestrzeni nazw dla dwudziestu tysięcy plików. Jeśli dodać kilka opcji:

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

(gdzie -d oznacza „stosowanie cyfr, a nie znaków alfabetycznych, dla przyrostka” i -a 5 oznacza „stosowanie przyrostków o długości 5”), to powinien działać dobrze - ja przetestował go z /dev/urandom (dla prędkości) na maszynie GNU/Linux bez problemów.

Zauważ, że jest to znacznie szybsze niż w przypadku innych odpowiedzi w pętli for (2,5 sekundy w porównaniu do 43 sekund w przypadku odpowiedzi Carl Norum na mojej maszynie).

Powiązane problemy