Ich habe ein Skript, das in einige Dateien schreibt, aber ich benötige sie in einer bestimmten Größe. Ich frage mich also, ob es eine Möglichkeit gibt, eine bestimmte Anzahl von Null-Bytes mit Standard-Befehlszeilentools an eine Datei anzuhängen (z. B. durch Kopieren von /dev/zero
).
26
oflag=append
für Sie?dd
Befehl.fallocate
eine weitere Möglichkeit zu sein, Löcher in eine Datei einzufügen. superuser.com/a/1172904/111432Antworten:
truncate
ist viel schneller alsdd
. Um die Datei mit 10 Bytes zu vergrößern, verwenden Sie:quelle
Sie können dies auch versuchen
Dies liest aus / dev / zero und hängt an die NUMBER Bytes Ihrer Datei an.
quelle
Unten sehen Sie ein Beispiel für das Anhängen von 10 MB an eine Datei, die nur dd verwendet.
quelle
Meine erste Vermutung wäre:
Grundsätzlich weist dieser Befehl dd an, am Ende der Datei zu "gehen" und einige zuvor aus / dev / zero gelesene Bytes hinzuzufügen.
Grüße,
quelle
oder
und um die Größe einfacher zu berechnen:
quelle
Wenn Sie Ihre Datei mit Null-Bytes auffüllen, wird davon ausgegangen, dass Sie die Datei in a
char *
in C bearbeiten. In diesem Fall müssen Sie die Datei möglicherweise nicht mit Null-Bytes auffüllen , sondern fügen am Ende nur ein Null-Byte hinzu der Datei und dann mit zufälligen Bytes Auffüllen könnte genug sein. In diesem Fall ist das C-Programm sehr effizient (nur für Dateien, die kleiner als der 2. Parameter sind, da sonst Daten überschrieben werden). Es kann sogar das tun, was Sie möchten (Auffüllen mit Null-Bytes), da dielseek
Funktionsdefinition Folgendes angibt:In diesem Fall könnte der 1. Anruf an
lseek
undwrite
entfernt werden. Aber Tests sollten zuerst auf Ihrem System durchgeführt werden ...quelle