Saya mencari perintah untuk membuat beberapa (ribuan) file yang berisi setidaknya 1KB data acak.
Sebagai contoh,
Name size
file1.01 2K
file2.02 3K
file3.03 5K
etc.
Bagaimana saya bisa membuat banyak file seperti ini?
shell-script
files
João José
sumber
sumber
Jawaban:
Karena Anda tidak memiliki persyaratan lain, sesuatu seperti ini seharusnya berfungsi:
(ini membutuhkan
bash
setidaknya untuk{1..1000}
).sumber
bash
karena berbagai alasan, termasuk$((…))
dan$RANDOM
. Bahkan$(…)
mungkin tidak ada di setiap shell.bash
atau tidak berasalbash
({1..1000}
berasal darizsh
,for n in...; done
dan ekspansi variabel berasal dari shell Bourne$(...)
,,$((...))
dan$RANDOM
datang ksh). Fitur yang bukan POSIX adalah{1..1000}
,$RANDOM
dan/dev/urandom
."%04d"
dalam hal inibash
atauzsh
dapat dilakukan{0001..1000}
tanpaprintf
Sebuah variasi dengan
seq
,xargs
,dd
danshuf
:Penjelasan sesuai permintaan per komentar:
seq -w 1 10
mencetak urutan angka dari 01 hingga 10xargs -n1 -I%
mengeksekusi perintahsh -c 'dd ... % ...'
untuk setiap nomor urut menggantikan % dengan itudd if=/dev/urandom of=file.% bs=$(shuf ...) count=1024
membuat file-file yang diumpankan dari / dev / urandom dengan 1024 blok dengan ukuran blokshuf -i1-10 -n1
nilai acak dari 1 hingga 10sumber
Anda dapat melakukan sesuatu seperti ini:
sumber
Ini menggunakan pipa tunggal dan tampaknya cukup cepat, tetapi memiliki batasan bahwa semua file memiliki ukuran yang sama
Penjelasan: Gunakan dd untuk membuat data 10240 * 1024 byte; membaginya menjadi 10240 file terpisah masing-masing 1k (nama akan dijalankan dari 'file.aaaa' melalui 'file.zzzz')
sumber