Potresti voler usare il comando truncate:
truncate --size=1G test.txt
SIZE può essere specificato come byte, KB, K, MB, M, ecc. Presumo che tu possa calcolare manualmente la dimensione desiderata; in caso contrario, potresti probabilmente utilizzare il comando stat per ottenere informazioni sulla dimensione attuale del file.
perl -we 'open( FILE, "< ./test.txt" ) && truncate( FILE, 8 ) && close(FILE);'
apre il file per la lettura. Tuttavia, per troncare il file è necessario modificarlo, quindi un handle di file di sola lettura non funzionerà. Devi usare la modalità "modifica" ("+>"
).
Come problema secondario, mi stupisce sempre quando le persone lasciano che le chiamate di sistema falliscano silenziosamente e poi chiedono cosa è andato storto. Un essenziale parte della diagnosi di un problema è esaminare il messaggio di errore prodotto; anche se non lo capisci, rende la vita molto più facile a coloro a cui chiedi aiuto.
Quanto segue sarebbe stato un po' più utile:
perl -we 'open(FILE, "<", "./test.txt") or die "open: $!";
truncate(FILE, 8) or die "truncate: $!";
close(FILE);'
anche se è vero che ciò avrebbe riportato solo "argomento non valido". Tuttavia, si tratta di informazioni utili e potrebbero averti portato alla conclusione che la modalità aperta era sbagliata (come è successo a me).
Puoi usare tail
per tagliare gli ultimi 1000 byte, esempio:
tail -c 1000 file> file2
la -c emette gli ultimi 1000 byte del file, per ulteriori opzioni:
coda di uomo
Per sostituire il file originale con il file appena generato:
mv file2 file