Estoy buscando un comando para crear múltiples (miles de) archivos que contengan al menos 1 KB de datos aleatorios.
Por ejemplo,
Name size
file1.01 2K
file2.02 3K
file3.03 5K
etc.
¿Cómo puedo crear muchos archivos como este?
shell-script
files
João José
fuente
fuente

Respuestas:
Como no tiene otros requisitos, algo como esto debería funcionar:
(Esto necesita
bashal menos para{1..1000}).fuente
bashpor numerosas razones, incluyendo$((…))y$RANDOM. Incluso$(…)podría no existir en cada caparazón.bashni se originó enbash({1..1000}proviene dezsh,for n in...; doney la expansión variable proviene del shell Bourne$(...),$((...))y$RANDOMviene ksh). Las características que no son POSIX son{1..1000},$RANDOMy/dev/urandom."%04d"en ese casobashozshpuede hacerlo{0001..1000}sinprintfUna variación con
seq,xargs,ddyshuf:Explicación según lo solicitado por comentarios:
seq -w 1 10imprime una secuencia de números del 01 al 10xargs -n1 -I%ejecuta el comandosh -c 'dd ... % ...'para cada número de secuencia reemplazando el % con éldd if=/dev/urandom of=file.% bs=$(shuf ...) count=1024crea los archivos alimentados desde / dev / urandom con 1024 bloques con un tamaño de bloque deshuf -i1-10 -n1un valor aleatorio de 1 a 10fuente
Puedes hacer algo como esto:
fuente
Esto usa una sola tubería y parece bastante rápido, pero tiene la limitación de que todos los archivos son del mismo tamaño
Explicación: Use dd para crear 10240 * 1024 bytes de datos; divídalo en 10240 archivos separados de 1k cada uno (los nombres se ejecutarán desde 'file.aaaa' hasta 'file.zzzz')
fuente