2013-06-11 53 views
7

Làm cách nào để tạo nhiều tệp (Hơn 20k, tôi cần các tệp này để chạy thử nghiệm để đồng bộ hóa) với dữ liệu ngẫu nhiên trong OS X? Tôi sử dụng một câu hỏi đã trả lời trước đó (How Can I Create Multiple Files of Random Data?) mà đề nghị sử dụng một cái gì đó giống nhưCách tạo nhiều tệp với dữ liệu ngẫu nhiên bằng bash

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

Nhưng sử dụng mà mang lại cho tôi một lỗi nói quá nhiều files.Any cách khác tôi có thể tạo ra một vòng lặp mà sẽ tạo ra các file với bất kỳ dữ liệu ngẫu nhiên ?

Trả lời

17

Bạn có thể làm điều đó với một vỏ for loop:

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

Điều chỉnh countbs nếu cần thiết để tạo file ảnh kích thước mà bạn quan tâm. Lưu ý rằng tôi đã đổi thành /dev/urandom để ngăn chặn việc chặn.

Bạn cũng có thể thêm một số >/dev/null 2>&1 để tắt tiếng.

+0

Cảm ơn bạn rất nhiều, tính năng này đã hoạt động! Tôi vẫn không chắc chắn những gì có nghĩa là đếm trong kịch bản này? (Tôi mới viết kịch bản) – bachkoi32

+1

'số' là một đối số cho' dd'. ['man dd'] (https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/dd.1.html) để biết thêm. –

+1

... cụ thể, 'count = 1' sẽ cung cấp cho bạn một khối đầu ra và' bs = 1' sẽ cung cấp cho bạn kích thước khối một - vì vậy, mỗi byte một byte, thay vì 2 byte trong ví dụ của bạn. –

4

Không chắc chắn nếu bạn có bất kỳ tập tin đặt tên yêu cầu, nhưng có lẽ đây:

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

Lý do cách tiếp cận của bạn không hoạt động là hậu tố mặc định cho split (2 ký tự chữ cái) không phải là một lớn đủ không gian tên cho hai mươi nghìn tệp. Nếu bạn thêm một vài lựa chọn:

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

(nơi -d có nghĩa là "chữ số sử dụng, không ký tự chữ cái, cho hậu tố" và -a 5 có nghĩa là "hậu tố sử dụng chiều dài 5"), nó nên làm việc tốt - Tôi thử nghiệm nó với /dev/urandom (cho tốc độ) trên một máy GNU/Linux mà không có vấn đề gì.

Lưu ý rằng điều này nhanh hơn nhiều so với cách tiếp cận vòng lặp của các câu trả lời khác (2,5 giây so với 43 giây đối với câu trả lời của Carl Norum trên máy của tôi).

Các vấn đề liên quan