Antworten:
Soweit ich weiß, gibt es keine Möglichkeit, die Verwendung dd
von Pads zu verdeutlichen 0xFF
. Es gibt jedoch eine Problemumgehung.
Erstellen Sie zuerst eine Datei mit der erforderlichen Länge, gefüllt mit 0xFF
:
$ dd if=/dev/zero ibs=1k count=100 | tr "\000" "\377" >paddedFile.bin
100+0 records in
200+0 records out
102400 bytes (102 kB) copied, 0,0114595 s, 8,9 MB/s
tr
wird verwendet, um Nullen durch zu ersetzen 0xFF
. tr
Erwartet Argumente in Oktal. 0xFF
im oktal ist \377
.
Ergebnis:
$ hexdump -C paddedFile.bin
00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00019000
Fügen Sie dann die Eingabedatei am Anfang der "aufgefüllten" Datei ein:
$ dd if=inputFile.bin of=paddedFile.bin conv=notrunc
0+1 records in
0+1 records out
8 bytes (8 B) copied, 7,4311e-05 s, 108 kB/s
Beachten Sie conv=notrunc
, dass dd
die Ausgabedatei nicht abgeschnitten werden soll.
Beispiel Eingabedatei:
$ hexdump -C inputFile.bin
00000000 66 6f 6f 0a 62 61 72 0a |foo.bar.|
00000008
Ergebnis:
$ hexdump -C paddedFile.bin
00000000 66 6f 6f 0a 62 61 72 0a ff ff ff ff ff ff ff ff |foo.bar.........|
00000010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00019000
Eine mögliche Verbesserung der Antwort von Lesmana besteht darin, die Datei direkt zu bearbeiten. Dies kann bei großen Eingabedateien sehr viel schneller sein und führt auch dazu, dass nur wenige Dateien vorhanden sind. In vielen Situationen möchten Sie Ihre Eingabedatei jedoch nicht ändern, weshalb diese Methode nicht geeignet ist.
Das folgende Beispiel beginnt mit einer großen, spärlichen Eingabedatei und füllt sie mit FF-Zeichen bis zu einer Größe von 1 GB auf. Wechseln newsize
Sie einfach zu Ihrem gewünschten Wert. Wie Sie sehen, dd
dauert der Teil nur einen Bruchteil einer Sekunde, obwohl diese Datei sehr groß ist.
$ ls -ld inputFile.bin
-rw-rw-r-- 1 … 1073741700 … inputFile.bin
$ hexdump inputFile.bin
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
3fffff80 0000 0000
3fffff84
$ newsize=$((1024 * 1024 * 1024))
$ filesize=$(stat -c "%s" inputFile.bin)
$ padcount=$((newsize - filesize))
$ dd if=/dev/zero ibs=1 count="$padcount" | tr "\000" "\377" >> inputFile.bin
124+0 records in
0+1 records out
124 bytes (124 B) copied, 0.000162309 s, 764 kB/s
$ ls -ld inputFile.bin
-rw-rw-r-- 1 … 1073741824 … inputFile.bin
$ hexdump inputFile.bin
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
3fffff80 0000 0000 ffff ffff ffff ffff ffff ffff
3fffff90 ffff ffff ffff ffff ffff ffff ffff ffff
*
40000000
paddedFile.bin
mit gefülltc3 bf
. Ich wundere mich warum? edit: superuser.com/questions/1349494/...