Ist es unter Linux (und/oder anderen Unix-Systemen) möglich, eine Datei von Anfang an zu "verkleinern"? Ich würde es gerne für eine persistente Warteschlange verwenden (keine existierende Implementierung entspricht meinen Bedürfnissen). Vom Ende der Datei ist es wohl mit truncate() möglich.
Antworten
Zu viele Anzeigen?
Francesquini
Punkte
1349
Wenn Sie ext4, xfs oder ein anderes modernes Dateisystem verwenden, können Sie seit Linux Kernel 3.15 verwenden:
#include <fcntl.h>
int fallocate(int fd, int mode, off_t offset, off_t len);
mit dem FALLOC_FL_COLLAPSE_RANGE
Flagge.
http://manpages.ubuntu.com/manpages/disco/en/man2/fallocate.2.html
MikeK
Punkte
642
Ja, Sie können die cut
o tail
um Teile einer Datei zu entfernen.
cut -b 17- input_file
tail -c +17 input_file
Dies gibt den Inhalt von input_file ab dem 17. Byte aus, wodurch die ersten 16 Bytes der Datei effektiv entfernt werden. Beachten Sie, dass die cut
Beispiel wird auch ein Zeilenumbruch in die Ausgabe eingefügt.
GDR
Punkte
2241