Vielleicht ein paar Bytes bis zu einer 4k-Grenze lesen und dann einen zweiten Befehl, um den Rest anzufügen?
Angenommen, wir wollen an einer 4K-Grenze enden (die meisten Dateisysteme scheinen 4K-interne Puffer zu verwenden).
- Fahren Sie mit dem Teil fort, an dem Sie mit dem Lesen beginnen möchten. (bs = 1 überspringen = 143254)
- Lesen Sie von 143254 bis 143254 mit bs = 1 und count = 3990
- Lesen Sie den Rest der Datei mit bs = 4k und hängen Sie sie an die Ausgabedatei an. (Sehen Sie hier, wie Sie Daten in einer Datei von dd an eine SU anhängen. )
Wenn dies zu langsam ist und Sie dies als sich wiederholende Aufgabe skripten, können Sie sogar noch weiter optimieren, indem Sie 512b Lesevorgänge für die ersten 3584 Bytes (7 * 512) ausführen. Dann lesen 400-Bit-Einzelbytes und der Rest die Größe 4k.
Beachten Sie, dass sich diese Antwort als Problemumgehung anfühlt. Ich werde die anderen Antworten, die diese Frage ansprechen wird, gerne lesen. Vielleicht sogar eine saubere Lösung, die nur nach 143254 sucht und dann zum Kopieren normale Lese- / Schreiboperationen verwendet, wodurch die Standardeinstellungen des Dateisystems verwendet werden können, anstatt meine expliziten Annahmen über interne 4-K-Puffer.