Verwenden Sie die Funktion truncate
http://linux.die.net/man/2/truncate
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
truncate übernimmt den Dateinamen
ftruncate nimmt einen offenen Dateideskriptor
beide setzen die Dateilänge auf length
es wird also entweder gekürzt oder verlängert (im letzteren Fall wird der Rest der Datei mit NULL/NULL gefüllt)
[Bearbeiten]
truncate (Linux-Shell-Befehl) funktioniert auch
**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
[/bearbeiten]
Obwohl es viele Verweise auf die truncate
gab Funktion in diesem Thread beantwortete niemand wirklich die Frage des OP nach dem Reduzieren einer Datei um einen festen Betrag aus einer Skriptumgebung. Kevins Antwort verwendete truncate
um die Größe der Zieldatei auf einen festen Betrag zu ändern, aber natürlich erfordert die Korrektheit dieser Lösung, dass der Benutzer zuerst die Größe der Zieldatei abzüglich der irrelevanten Daten am Ende kennt. Wir haben also:
-s, --size=SIZE set or adjust the file size by SIZE bytes
Truncate
unterstützt tatsächlich das direkte Entfernen von Daten vom Ende einer Zieldatei, indem SIZE ein -
vorangestellt wird Charakter.
Um beispielsweise die Größe einer Datei um 314 Byte zu ändern, können Sie Folgendes tun:
truncate --size=-314 target_file.bin
Die Verwendung von "truncate" ist der beste Weg, ich poste nur einige Beispiele:
-
Ich habe eine Datei "PNav-h.db", sie hat 50176 Bytes.
-rw-r--r-- 1 user user 50176 Mar 8 23:43 PNav-h.db $truncate -s 1000 PNav-h.db
es setzt die Dateigröße auf 1000 Byte
-rw-r--r-- 1 user user 1000 Mar 9 00:02 PNav-h.db
-
Verwenden Sie für Ihren Fall
$truncate --size=xxx xxfilename
, mit-<size number>
um die Dateigröße zu reduzieren$truncate --size=-300 PNav-h.db -rw-r--r-- 1 user user 700 Mar 9 00:07 PNav-h.db
endgültige Dateigröße =1000-300=700
-
mit
+<size number>
um die Dateigröße zu erhöhen$truncate --size=+500 PNav-h.db -rw-r--r-- 1 user user 1200 Mar 9 00:09 PNav-h.db
endgültige Dateigröße =700 + 500 =1200
-
wenn es kein
-
gibt oder+
, um die Dateigröße einzustellen.$truncate --size=60000 PNav-h.db -rw-r--r-- 1 user user 60000 Mar 9 00:12 PNav-h.db
endgültige Dateigröße auf 60000 gesetzt