Linux: Datei in andere Datei einfügen



  • Hallo,

    folgendes Problem: ich will eine Datei in eine Datei anfügen, genauer gesagt, an den Anfang einer anderen Datei.

    Die Dateien sind keine Textdateien, sondern Binärdateien, und ich finde keine passende Lösung.



  • cat?



  • Tyrdal schrieb:

    cat?

    ?
    Also in etwa so:

    cat Datei1 > Datei2
    

    Ich will die Datei an den Anfang der anderen Datei einfügen, und nicht ans Ende der Datei anhängen.



  • cat? sed? schrieb:

    Tyrdal schrieb:

    cat?

    ?
    Also in etwa so:

    cat Datei1 > Datei2
    

    Ich will die Datei an den Anfang der anderen Datei einfügen, und nicht ans Ende der Datei anhängen.

    cat Datei2 > Datei1
    :p



  • Nein, das ist nicht das, was ich suche.

    Ich will einfach eine Datei vollständig in eine andere Datei einfügen, d.h. die Dateigröße der Datei2 ändert sich nicht.

    Dateigröße von Datei1 < Dateigröße von Datei2
    Datei1 -> Datei2[offset 0]

    Genau so.



  • Nachtrag:
    Datei2 ist eventuell eine Device-Datei, weswegen Lösungen wie

    cat /dev/X > Datei1
    

    keinen Sinn machen.
    Datei1 soll in Datei2 geschrieben werden.


  • Mod

    cat = concatenate

    Schlag mal nach, was das heißt. cat ist mehr als nur ein Dateianzeigeprogramm. Es wird bloß gerne dafür missbraucht.

    Hier ist der eigentliche Einsatzzweck von man: cat gefragt.



  • umdreher schrieb:

    cat? sed? schrieb:

    Tyrdal schrieb:

    cat?

    ?
    Also in etwa so:

    cat Datei1 > Datei2
    

    Ich will die Datei an den Anfang der anderen Datei einfügen, und nicht ans Ende der Datei anhängen.

    cat Datei2 > Datei1
    :p

    Das würde Datei1 überchreiben, wenn schon dann:
    cat Datai2 >> Datei1



  • @ SeppJ:

    concatenate=aneinanderhängen
    ... und das ist genau das, was ich nicht will.

    Ich wiederhole nochmal:
    Datei1 soll in Datei2 eingefügt werden.

    Möglicherweise versteh ich auch deinen Hinweis nicht, ich hab die Manpage gelesen, das brachte auch keine neuen Erkenntnisse.
    Schreib doch bitte genau, was du meinst.

    @ Auskenner:

    Auskenner schrieb:

    cat Datai2 >> Datei1

    Dies hängt Datei2 an Datei1 an, ich will Datei1 in Datei2 einfügen.



  • cat? sed? schrieb:

    @ SeppJ:

    concatenate=aneinanderhängen
    ... und das ist genau das, was ich nicht will.

    Ich wiederhole nochmal:
    Datei1 soll in Datei2 eingefügt werden.

    Möglicherweise versteh ich auch deinen Hinweis nicht, ich hab die Manpage gelesen, das brachte auch keine neuen Erkenntnisse.
    Schreib doch bitte genau, was du meinst.

    Nimm einfach einen Hexeditor wie Bless, wenn die Datei nicht zu groß ist, sollte das kein Problem damit sein.

    @ Auskenner:

    Auskenner schrieb:

    cat Datai2 >> Datei1

    Dies hängt Datei2 an Datei1 an, ich will Datei1 in Datei2 einfügen.

    Das hast du am Schluss gesagt, ich antwortete aber auf umdrehers Posting, welches eine Antwort auf deine erste Frage war:

    ich will eine Datei in eine Datei anfügen



  • Suchst Du dd?


  • Mod

    cat? sed? schrieb:

    @ SeppJ:

    concatenate=aneinanderhängen
    ... und das ist genau das, was ich nicht will.

    Ich wiederhole nochmal:
    Datei1 soll in Datei2 eingefügt werden.

    Du hast gesagt:

    cat? sed? schrieb:

    Ich will die Datei an den Anfang der anderen Datei einfügen, und nicht ans Ende der Datei anhängen.

    Wenn du Datei1 an den Anfang von Datei2 einfügen möchtest, dann ist das nichts anderes, als Datei2 an das Ende von Datei1 zu hängen.

    cat Datei1 Datei2 > /tmp/tempfile && mv /tmp/tempfile Datei2
    

    Oder, falls vorhanden, mit Tools wie sponge , anstatt einer temporären Datei.



  • SeppJ schrieb:

    Wenn du Datei1 an den Anfang von Datei2 einfügen möchtest, dann ist das nichts anderes, als Datei2 an das Ende von Datei1 zu hängen.

    Ja, das ist richtig, aber eine der Datei ist ein Device! Soll ich jetzt 2 Terabyte in einen temporären Speicher kopieren?

    Ich will eine Datei einfügen in die Device-Datei.
    Nicht anhängen.



  • Einfügen in eine Datei ist bei gängigen Dateisystemen nicht möglich, sondern nur anhängen. Ohne Kopieren kommst du also nicht weiter.



  • Th69 schrieb:

    Einfügen in eine Datei ist bei gängigen Dateisystemen nicht möglich, sondern nur anhängen. Ohne Kopieren kommst du also nicht weiter.

    Ok, das ist wenigstens eine Aussage.
    Obwohl ich die Datei nicht in eine Datei, sondern in ein Device-File einfügen will.

    Irgendwie wurde der Bootloader meiner Festplatte überspielt, und jetzt will ich ein Backup des Bootloaders, genauer gesagt ein Backup der ersten 512 Bytes auf die Festplatte einfügen.

    Also:
    Bootloader (512 Bytes) einfügen in /dev/X (offset 0)



  • cat? sed? schrieb:

    jetzt will ich ein Backup des Bootloaders, genauer gesagt ein Backup der ersten 512 Bytes auf die Festplatte einfügen.

    Das klingt aber eher nach Überschreiben als nach Einfügen. Soll der bestehende Inhalt wirklich 512 Bytes nach hinten verschoben werden?



  • MFK schrieb:

    cat? sed? schrieb:

    jetzt will ich ein Backup des Bootloaders, genauer gesagt ein Backup der ersten 512 Bytes auf die Festplatte einfügen.

    Das klingt aber eher nach Überschreiben als nach Einfügen. Soll der bestehende Inhalt wirklich 512 Bytes nach hinten verschoben werden?

    Nein, die ersten 512 Bytes sollen ersetzt werden.



  • * Es tut mir leid, möglicherweise liegt das Problem, ich habe mich unklar ausgedrückt, ich meinte nicht einfügen, sondern ersetzen. Sorry!



  • Na dann dd mit conv=notrunc.



  • Ok, danke soweit.

    Wenn ich mir noch eine Frage erlauben darf:
    Was, wenn offset!=0, sondern offset=x ?


Anmelden zum Antworten