basename - Generar archivos ficticios en bash
basename bash (8)
Me gustaría generar archivos de relleno en bash. El contenido no importa, si fuera aleatorio sería bueno, pero también es aceptable el mismo byte.
Mi primer intento fue el siguiente comando:
rm dummy.zip;
touch dummy.zip;
x=0;
while [ $x -lt 100000 ];
do echo a >> dummy.zip;
x=`expr $x + 1`;
done;
El problema fue su pobre desempeño. Estoy usando GitBash en Windows, por lo que podría ser mucho más rápido en Linux, pero el script obviamente no es óptimo.
¿Podría sugerirme una forma más rápida y agradable de generar archivos de relleno (binarios) de un tamaño determinado?
Esto generará un archivo de texto de 100.000 bytes de gran tamaño:
yes 123456789 | head -10000 > dummy.file
Forma fácil:
Hacer archivo de prueba y poner una línea de "prueba"
Luego ejecuta:
cat test >> test
ctrl + c después de un minuto dará como resultado un montón de gigabytes :)
Posiblemente
dd if=/dev/zero of=/dummy10MBfile bs=1M count=10
Puedes probar el comando head
:
$ head -c 100000 /dev/urandom >dummy
Puedes usar dd para este propósito:
dd if=/dev/urandom bs=1024 count=5 of=dummy
- if: = in file
- de: = archivo de salida
- bs: = tamaño de bloque
Tenga en cuenta que
x=`expr $x + 1`;
no es la forma más eficiente de cálculo en bash. Hacer cálculo de enteros aritméticos en paréntesis de doble vuelta:
x=((x+1))
Pero para un contador incrementado en un bucle, se inventó el bucle for:
x=0;
while [ $x -lt 100000 ];
do echo a >> dummy.zip;
x=`expr $x + 1`;
done;
en contraste con:
for ((x=0; x<100000; ++x))
do
echo a
done >> dummy.zip
Aquí hay 3 cosas a tener en cuenta:
- a diferencia del [-case, no necesitas el espacio dentro de los parens.
- puede usar el incremento de prefijo (o postfix) aquí: ++ x
- la redirección al archivo se extrae del bucle. En lugar de 1000000 pasos de apertura y cierre, el archivo solo se abre una vez.
Pero todavía hay una forma más simple de for-loop:
for x in {0..100000}
do
echo a
done >> dummy.zip
Si su sistema de archivos es ext4, btrfs, xfs u ocfs2, y si no le importa el contenido, puede usar fallocate
. Es el método más rápido si necesitas archivos grandes.
fallocate -l 100KB dummy_100KB_file
Consulte " Crear rápidamente un archivo grande en un sistema Linux? " Para obtener más detalles.
echo "Para imprimir la palabra en secuencia desde el archivo" c = 1 para w en el cat file
haga eco "$ c. $ w" c = expr $c +1
hecho
$ openssl rand 1000000 -out random.tmp