Cree un directorio de archivos, cada uno con un tamaño de archivo determinado.

Cree un directorio de archivos, cada uno con un tamaño de archivo determinado.

Me gustaría crear 100 archivos, cada uno con un tamaño de archivo de 10 MB. ¿Existe un comando Unix simple que pueda crear un directorio con estos 100 archivos?

Respuesta1

for x in {1..100}; do dd if=/dev/zero of=file$x bs=10485760 count=1; done

if=FILE (read from FILE instead of stdin)
of=FILE (write to FILE instead of stdout)
bs=BYTES (force ibs=BYTES and obs=BYTES)
ibs=BYTES (read BYTES bytes at a time)
obs=BYTES (write BYTES bytes at a time)
count=1 (copy only 1 input block)

Respuesta2

Para complementar la respuesta de Ochi, esta es una forma de crear 100 archivos de 10 MB sin usar 1 GB de espacio en disco y ejecutándolos a la velocidad del rayo:

size=$((10*1024*1024))
nb_files=100
for n in $(seq -f "%03.0f" 1 $nb_files); do
  dd if=/dev/zero of=file$n bs=1 count=1 seek=$((size-1))
done

(Verarchivos dispersospara más detalles.)

O de otra manera (pero aquí, si editas uno de los archivos, los editas todos):

size=$((10*1024*1024))
n=$(seq -f "%03.0f" 1 1)
dd if=/dev/zero of=file$n bs=1 count=1 seek=$((size-1))
nb_files=100
for m in $(seq -f "%03.0f" 2 $nb_files); do
  ln file$n file$m
done

(Verenlaces durospara más detalles.)

información relacionada