usa la función truncate
http://linux.die.net/man/2/truncar
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
truncar toma el nombre del archivo
ftruncate toma un descriptor de archivo abierto
ambos establecen la longitud del archivo en length
por lo que se trunca o se alarga (en este último caso, el resto del archivo se llenará con NULL/ZERO)
[editar]
truncar (comando de shell de Linux) también funcionará
**SYNTAX**
truncate -s integer <filename>
**OPTIONS**
-s number specify the new file length. If the new length is smaller than the current filelength data is lost. If the new length is greater the file is padded with 0. You can specify a magnitude character to ease large numbers:
b or B size is bytes.
k size is 1000 bytes.
K size is 1024 bytes.
m size is 10^6 bytes.
M size is 1024^2 bytes.
g size is 10^9 bytes.
G size is 1024^3 bytes.
**EXAMPLES**
To shrink a file to 10 bytes:
truncate -s 10 /tmp/foo
To enlarge or shrink a file to 345 Megabytes:
truncate -s 345M /tmp/foo
[/editar]
Aunque había muchas referencias al truncate
función en este hilo, nadie respondió realmente a la pregunta del OP sobre la reducción de un archivo en una cantidad fija desde un entorno de secuencias de comandos. La respuesta de Kevin usó truncate
para cambiar el tamaño del archivo de destino a una cantidad fija, pero, por supuesto, la corrección de esta solución requiere que el usuario sepa primero el tamaño del archivo de destino menos los datos extraños al final. Entonces, tenemos:
-s, --size=SIZE set or adjust the file size by SIZE bytes
Truncate
en realidad admite la eliminación de datos desde el final de un archivo de destino directamente anteponiendo SIZE con un -
personaje.
Por ejemplo, para cambiar el tamaño de un archivo en 314 bytes, puede hacer:
truncate --size=-314 target_file.bin
Usar "truncar" es la mejor manera, solo publico algunos ejemplos:
-
Tengo un archivo "PNav-h.db", tiene 50176 bytes.
-rw-r--r-- 1 user user 50176 Mar 8 23:43 PNav-h.db $truncate -s 1000 PNav-h.db
estableció el tamaño del archivo en 1000 bytes
-rw-r--r-- 1 user user 1000 Mar 9 00:02 PNav-h.db
-
Para su caso, use
$truncate --size=xxx xxfilename
, usando-<size number>
para reducir el tamaño del archivo$truncate --size=-300 PNav-h.db -rw-r--r-- 1 user user 700 Mar 9 00:07 PNav-h.db
tamaño final del archivo =1000-300=700
-
usando
+<size number>
para aumentar el tamaño del archivo$truncate --size=+500 PNav-h.db -rw-r--r-- 1 user user 1200 Mar 9 00:09 PNav-h.db
tamaño final del archivo =700 + 500 =1200
-
si no hay
-
o+
, es para establecer el tamaño del archivo.$truncate --size=60000 PNav-h.db -rw-r--r-- 1 user user 60000 Mar 9 00:12 PNav-h.db
tamaño de archivo final establecido en 60000