10 Stimmen

Verkleinern (Abschneiden) der Datei vom Anfang an unter Linux

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.

3voto

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

-2voto

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.

-5voto

GDR Punkte 2241

Ich habe die als Argument angegebene Datei mit Hilfe des folgenden Python-Skripts auf 64 000 000 Bytes gekürzt:

#!/usr/bin/env python

import sys
import os

file = sys.argv[1]
f = os.open(file, os.O_RDWR)
os.ftruncate(f, 64000000)
os.close(f)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X