usa la funzione truncate
http://linux.die.net/man/2/truncate
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
truncate prende il nome del file
ftruncate accetta un descrittore di file aperto
entrambi impostano la lunghezza del file su length
quindi tronca o allunga (in quest'ultimo caso, il resto del file sarà riempito con NULL/ZERO)
[modifica]
funzionerà anche truncate (comando shell linux).
**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
[/modifica]
Sebbene ci fossero molti riferimenti al truncate
funzione in questo thread, nessuno ha davvero risposto alla domanda dell'OP sulla riduzione di un file di un importo fisso da un ambiente di scripting. La risposta di Kevin utilizzava truncate
per ridimensionare il file di destinazione a un importo fisso, ma ovviamente la correttezza di questa soluzione richiede che l'utente conosca prima la dimensione del file di destinazione meno i dati estranei alla fine. Quindi, abbiamo:
-s, --size=SIZE set or adjust the file size by SIZE bytes
Truncate
in realtà supporta la rimozione dei dati dalla fine di un file di destinazione direttamente anteponendo a SIZE un -
carattere.
Ad esempio, per ridimensionare un file di 314 byte puoi fare:
truncate --size=-314 target_file.bin
Usare "truncate" è il modo migliore, inserisco solo alcuni esempi:
-
Ho un file "PNav-h.db", ha 50176 byte.
-rw-r--r-- 1 user user 50176 Mar 8 23:43 PNav-h.db $truncate -s 1000 PNav-h.db
imposta la dimensione del file a 1000 byte
-rw-r--r-- 1 user user 1000 Mar 9 00:02 PNav-h.db
-
Nel tuo caso, usa
$truncate --size=xxx xxfilename
, utilizzando-<size number>
per ridurre le dimensioni del file$truncate --size=-300 PNav-h.db -rw-r--r-- 1 user user 700 Mar 9 00:07 PNav-h.db
dimensione finale del file =1000-300=700
-
utilizzando
+<size number>
per aumentare la dimensione del file$truncate --size=+500 PNav-h.db -rw-r--r-- 1 user user 1200 Mar 9 00:09 PNav-h.db
dimensione finale del file =700 + 500 =1200
-
se non c'è
-
o+
, serve per impostare la dimensione del file.$truncate --size=60000 PNav-h.db -rw-r--r-- 1 user user 60000 Mar 9 00:12 PNav-h.db
dimensione finale del file impostata su 60000