GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gibt es eine Möglichkeit, Dateien in einer ZIP-Datei zu bearbeiten, ohne sie vorher explizit zu extrahieren?

Vim unterstützt das transparente Bearbeiten von Dateien in Zip-Dateien. Führen Sie einfach Folgendes aus:

vim file.zip

und Ihnen wird eine Liste der Dateien im Zip-Archiv angezeigt. Wählen Sie diejenige aus, die Sie bearbeiten möchten, ändern Sie, was Sie möchten, und verlassen Sie sie mit :x

Wenn vim antwortet mit:

Änderungen sind nicht möglich, 'änderbar' ist deaktiviert

.. führen Sie einfach :set modifiable aus oder :set ma (Quelle:https://stackoverflow.com/questions/5745506/vim-modifiable-is-off)


Kennen Sie den Namen der Datei im Archiv, bevor Sie sie entpacken? Sie könnten eine Funktion zum Entpacken nach /tmp erstellen , bearbeiten und aktualisieren Sie die ZIP-Datei:

zipedit(){
    echo "Usage: zipedit archive.zip file.txt"
    unzip "$1" "$2" -d /tmp 
    vi /tmp/$2 && zip -j --update "$1"  "/tmp/$2" 
}

Wie es heißt, ist die Verwendung:

zipedit myarchive.zip myfile.txt

Dies entpackt die benannte Datei aus dem Archiv und speichert sie unter /tmp , bearbeitet es in vi fügt es dann wieder dem Archiv hinzu, während der Pfad "junken" wird. Zu Ihrem .bash_profile hinzufügen, vorausgesetzt bash ...

BEARBEITEN: Unten ist eine Version, die mit Unterordnern innerhalb des Archivs arbeitet... Beachten Sie, verwenden Sie keinen Schrägstrich vor dem Namen des Ordners (d. h. verwenden Sie myfolder/file.txt nicht /myfolder/file.txt ). Wenn Sie eine Datei bearbeiten, die noch nicht im Archiv vorhanden war, wird sie für Sie erstellt. Auch nicht sicher, ob es mit dem absoluten Pfad zur Zip-Datei funktioniert. Bleiben Sie am besten beim Verwandten.

zipedit(){
    echo "Usage: zipedit archive.zip folder/file.txt"
    curdir=$(pwd)
    unzip "$1" "$2" -d /tmp 
    cd /tmp
    vi "$2" && zip --update "$curdir/$1"  "$2" 
    # remove this line to just keep overwriting files in /tmp
    rm -f "$2" # or remove -f if you want to confirm
    cd "$curdir"
}

Danke für die Frage. Am Ende werde ich wahrscheinlich auch dieses verwenden!

Eine weitere Bearbeitung:Ungetestet, aber ich habe diesen vim gelesen und emacs werden beide JAR-Dateien direkt bearbeiten?


Kurze Antwort:NEIN.

Wenn es sich um einen Wrapper handelt, sind Sie Aufruf dieser Befehle. Wie auch immer, das Beste, was mir einfällt, ist, die Datei mit file-roller zu öffnen , wenn Sie sich in einer X-Umgebung befinden, funktioniert das je nach Setup möglicherweise mit einem einfachen Doppelklick. Sie können dann auf die komprimierte Datei doppelklicken, um sie zu öffnen und dann zu bearbeiten:

$ file-roller b3.zip 

Wenn Sie Ihre bearbeitete Datei speichern, sollten Sie diesen Dialog erhalten:

Sie könnten dafür auch ein Skript erstellen, aber das wird kompliziert, wenn Sie komprimierte Archive haben, die mehrere Dateien enthalten. Lassen Sie mich wissen, wenn Sie das brauchen, und ich kann vielleicht etwas kochen.


Linux
  1. Wie kann ich nach Dateien suchen und sie in einer Zip-Datei komprimieren?

  2. Gibt es eine Möglichkeit, eine NETCDF-Datei zuzuschneiden?

  3. Gibt es eine Möglichkeit, ein vorhandenes Nautilus-Lesezeichen (Dateimanager) zu bearbeiten?

  4. Wie schreibe ich Dateien auf einen USB-Stick, ohne root zu sein?

  5. Gibt es eine Möglichkeit, ein unterbrochenes scp einer Datei fortzusetzen?

So bearbeiten Sie PDF-Dateien unter Linux auf die einfachste Art und Weise

Steganographie – Dateien in Bildern unter Linux verstecken

Vim-Tipps – Bearbeiten Sie Remote-Dateien mit Vim unter Linux

So bearbeiten Sie eine Datei, ohne ihre Zeitstempel in Linux zu ändern

Kopieren Sie Dateiinhalte in die Zwischenablage, ohne sie anzuzeigen

So komprimieren Sie eine Datei unter Linux