it-swarm.com.de

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

Manchmal muss ich Änderungen an einer ZIP- oder JAR-Datei vornehmen, daher verschiebe ich die Datei normalerweise nach /tmp, extrahiere alle Dateien mit unzip, bearbeite einige Dateien und komprimiere sie dann erneut. Das funktioniert, aber es kann mühsam sein. Gibt es ein Hilfsprogramm oder ein Shell-Skript, mit dem ich eine Datei in einer Zip-Datei bearbeiten kann, ohne explizit unzip und Zip aufzurufen (auch wenn es sich nur um einen Wrapper um diese Befehle handelt)?

42
austin

Kennen Sie den Namen der Datei im Archiv, bevor Sie sie entpacken? Sie können eine Funktion zum Entpacken in /tmp, Bearbeiten und Aktualisieren der Zip erstellen:

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, speichert sie in /tmp, bearbeitet sie in vi und fügt sie dann wieder dem Archiv hinzu, während der Pfad "gesperrt" wird. Fügen Sie Ihrem .bash_profile hinzu, vorausgesetzt, bash...

BEARBEITEN: Nachfolgend finden Sie eine Version, die mit Unterordnern im Archiv funktioniert ... Hinweis: Verwenden Sie keinen Schrägstrich vor dem Namen des Ordners (dh verwenden Sie myfolder/file.txt nicht /myfolder/file.txt). Wenn Sie eine Datei bearbeiten, die noch nicht im Archiv vorhanden ist, wird sie für Sie erstellt. Ich bin mir auch nicht sicher, ob es mit dem absoluten Pfad zur Zip-Datei funktioniert. Am besten bei Verwandten bleiben.

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. Ich werde wahrscheinlich auch dieses verwenden!

Eine andere Bearbeitung: Ungetestet, aber ich habe gelesen, dass sowohl vim als auch emacs JAR-Dateien direkt bearbeiten?

19
beroe

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 das zu bearbeitende aus, ändern Sie die gewünschten Einstellungen und beenden Sie das Programm mit: x

Wenn vim antwortet mit:

Änderungen können nicht vorgenommen werden, 'änderbar' ist deaktiviert

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

54
jesjimher

Kurze Antwort: NEIN.

Wenn es sich um einen Wrapper handelt, rufen Sie diese Befehle auf . Wie auch immer, das Beste, was ich mir vorstellen kann, ist, die Datei mit file-roller zu öffnen, wenn Sie sich in einer X-Umgebung befinden, die abhängig von Ihrem Setup möglicherweise mit einem einfachen Doppelklick funktioniert. Sie können dann auf die komprimierte Datei doppelklicken, um sie zu öffnen, und sie dann bearbeiten:

$ file-roller b3.Zip 

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

Sie könnten auch ein Skript dafür erstellen, aber das wird kompliziert, wenn Sie Archive komprimiert haben, die mehrere Dateien enthalten. Lassen Sie mich wissen, ob Sie das brauchen und ich in der Lage sein könnte, etwas zu kochen.

enter image description here

4
terdon

Kurze umständliche Antwort; Nein. Wenn Sie an Komprimierung denken, verwenden Sie Redundanz, um die darin enthaltenen Dateien zu verkürzen, sodass bei jeder Bearbeitung die gesamte Datei im Archiv, möglicherweise das Archiv, geändert wird.

Wenn Sie weniger theoretisch, praktischer und "Ich möchte nicht manuell entpacken/zip" sind, gibt es Tools, die Sie verwenden können. ark unter Linux habe ich verwendet. Sie können das Archiv auch mit Fuse-Zip mounten, obwohl das wahrscheinlich mehr Arbeit ist als eine temporäre Datei.

0
Rich Homolka

Ich habe ein Vim-Plugin geschrieben, mit dem sich das Archiv Zip.vim erweitern lässt, um verschachtelte Zip-Dateien zu durchsuchen und zu bearbeiten.

https://github.com/lbrayner/vim-rzip

0
lbrayner

Laut der Manpage für Zip (Online-Version zum einfachen Nachschlagen: http://linux.die.net/man/1/Zip ) kann die Der Befehl Zip hat ein -u-Flag, das wie folgt beschrieben wird:

Ersetzen (aktualisieren) Sie einen vorhandenen Eintrag im Zip-Archiv nur, wenn er vor kurzem geändert wurde als die Version, die sich bereits im Zip-Archiv befindet.

0
Proctor

Mit dem Directory Opus 12-Dateimanager können Sie die ZIP-Datei durchsuchen, die bearbeitete Datei per Drag & Drop aus einem anderen Ordner in den Ordner ziehen und die zu bearbeitende Datei überschreiben. Sehr leicht

0
Technometry

Sie können einen Standard-KDE-Texteditor verwenden, zum Beispiel:

  1. archiv im Archivmanager öffnen
  2. textdatei im KDE-GUI-Editor öffnen
  3. speichern Sie die Textdatei und das System fordert Sie auf, das Archiv zu aktualisieren. Klicken Sie auf Ja
  4. vergessen Sie nicht die Erlaubnis für das Archiv und den Ordner des Archivs (mein Lieblingsfehler)
0
tvorez