Tengo un script que escribe en algunos archivos pero los necesito de un tamaño específico. Entonces, me pregunto si hay una manera de agregar un número específico de bytes nulos a un archivo utilizando herramientas de línea de comando estándar (por ejemplo, copiando desde /dev/zero
).
26
oflag=append
Funciona para ti?dd
comando.fallocate
es otra opción para insertar agujeros en un archivo. superuser.com/a/1172904/111432Respuestas:
truncate
es mucho más rápido quedd
. Para hacer crecer el archivo con 10 bytes, use:fuente
Puedes probar esto también
Esto leerá desde / dev / zero y se agregará a su número de bytes NÚMERO.
fuente
A continuación se muestra un ejemplo de agregar 10MB a un archivo usando solo dd.
fuente
mi primera suposición sería:
Básicamente, este comando le dice a dd que "vaya" al final del archivo y agregue algunos bytes previamente leídos de / dev / zero.
Saludos,
fuente
o
y para calcular el tamaño más fácilmente:
fuente
Si está rellenando su archivo con bytes nulos, supongo que está manipulando el archivo en a
char *
en C. Si este es el caso, es posible que no necesite rellenar el archivo con bytes nulos, solo agregando un byte nulo al final del archivo y luego rellenarlo con bytes aleatorios podría ser suficiente. En este caso, el siguiente programa C sería muy eficiente (para usarse solo en archivos más pequeños que el segundo parámetro; de lo contrario, los datos se sobrescribirán). Incluso podría hacer lo que quiera (relleno con bytes nulos) ya que lalseek
definición de la función establece que:En este caso, la primera llamada a
lseek
ywrite
podría eliminarse. Pero las pruebas deben hacerse en su sistema primero ...fuente