GNU/Linux >> Linux Esercitazione >  >> Linux

C'è un modo per modificare i file all'interno di un file zip senza prima estrarli esplicitamente?

Vim supporta la modifica trasparente dei file all'interno dei file zip. Basta eseguire:

vim file.zip

e ti verrà mostrato un elenco di file all'interno dell'archivio zip. Scegli quello che vuoi modificare, cambia quello che vuoi ed esci con :x

Se vim risponde con:

Impossibile apportare modifiche, 'modificabile' è disattivato

.. basta eseguire :set modifiable o :set ma (fonte:https://stackoverflow.com/questions/5745506/vim-modifiable-is-off)


Conosci il nome del file nell'archivio prima di decomprimerlo? Potresti creare una funzione per decomprimere in /tmp , modifica e aggiorna lo zip:

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

Come si dice, l'utilizzo è:

zipedit myarchive.zip myfile.txt

Questo decomprime il file indicato dall'archivio, lo salva in /tmp , lo modifica in vi quindi lo aggiunge nuovamente all'archivio, mentre "elimina" il percorso. Aggiungi al tuo .bash_profile, assumendo bash ...

MODIFICA: Di seguito è riportata una versione che funziona con le sottocartelle all'interno dell'archivio... Nota, non utilizzare una barra prima del nome della cartella (ad esempio utilizzare myfolder/file.txt non /myfolder/file.txt ). Se modifichi un file che non esisteva già nell'archivio, lo creerà per te. Inoltre, non sono sicuro che funzionerà con il percorso assoluto del file zip. Il miglior bastone con il parente.

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"
}

Grazie per la domanda. Probabilmente finirò per usare anche questo!

Un'altra modifica:non testata, ma ho letto quel vim e emacs entrambi modificheranno direttamente i file jar?


Risposta breve:NO.

Se è un involucro, lo sei chiamando questi comandi. Ad ogni modo, il meglio che mi viene in mente è aprire il file usando file-roller , se sei in un ambiente X, potrebbe funzionare con un semplice doppio clic, a seconda della tua configurazione. Puoi quindi fare doppio clic sul file compresso per aprirlo e modificarlo:

$ file-roller b3.zip 

Quando salvi il file modificato, dovresti visualizzare questa finestra di dialogo:

Potresti creare uno script anche per questo, ma diventa complicato se hai archivi compressi che contengono più file. Fammi sapere se è ciò di cui hai bisogno e potrei essere in grado di cucinare qualcosa.


Linux
  1. come posso cercare i file e comprimerli in un unico file zip

  2. C'è un modo per ritagliare un file NETCDF?

  3. C'è un modo per modificare un segnalibro nautilus (file manager) esistente?

  4. Come posso scrivere file su una USB senza essere root?

  5. È possibile leggere un file di testo all'interno di un file zip protetto da password senza la password?

Come modificare i file PDF in Linux nel modo più semplice possibile

Steganografia:nascondi i file all'interno delle immagini in Linux

Suggerimenti Vim:modifica file remoti con Vim su Linux

Come modificare un file senza modificarne i timestamp in Linux

Copia il contenuto del file negli Appunti senza visualizzarli

Come comprimere un file in Linux