GNU/Linux >> Znalost Linux >  >> Linux

Existuje způsob, jak upravit soubory uvnitř souboru zip, aniž byste je nejprve explicitně extrahovali?

Vim podporuje transparentní úpravy souborů uvnitř souborů zip. Stačí provést:

vim file.zip

a zobrazí se vám seznam souborů v archivu zip. Vyberte ten, který chcete upravit, změňte, co chcete, a ukončete pomocí :x

Pokud vim odpovídá:

Nelze provádět změny, možnost 'modifikovatelné' je vypnutá

.. stačí spustit :set modifiable nebo :set ma (zdroj:https://stackoverflow.com/questions/5745506/vim-modifiable-is-off)


Znáte název souboru v archivu před jeho rozbalením? Můžete vytvořit funkci pro rozbalení na /tmp , upravte a obnovte soubor zip:

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

Jak se říká, použití je:

zipedit myarchive.zip myfile.txt

Tím se rozbalí pojmenovaný soubor z archivu a uloží se do /tmp , upraví jej v vi pak jej přidá zpět do archivu, zatímco „vyhazuje“ cestu. Přidejte do svého .bash_profile, za předpokladu bash ...

UPRAVIT: Níže je uvedena verze, která pracuje s podsložkami v archivu... Všimněte si, že před názvem složky nepoužívejte lomítko (tj. použijte myfolder/file.txt ne /myfolder/file.txt ). Pokud upravíte soubor, který v archivu ještě neexistoval, vytvoří jej za vás. Také si nejste jisti, zda to bude fungovat s absolutní cestou k souboru zip. Nejlepší je zůstat u příbuzného.

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

Děkuji za otázku. Pravděpodobně nakonec použiji i tento!

Další úprava:Netestováno, ale četl jsem, že vim a emacs budou oba upravovat soubory jar přímo?


Krátká odpověď:NE.

Pokud se jedná o obálku, jste volání těchto příkazů. Každopádně nejlepší, co mě napadá, je otevřít soubor pomocí file-roller , pokud jste v prostředí X, může to fungovat jednoduchým dvojitým kliknutím, v závislosti na vašem nastavení. Poté můžete dvakrát kliknout na komprimovaný soubor a otevřít jej a poté jej můžete upravit:

$ file-roller b3.zip 

Když uložíte svůj upravený soubor, měl by se zobrazit tento dialog:

Mohli byste pro to také vytvořit skript, ale to se komplikuje, pokud máte komprimované archivy, které obsahují více souborů. Dejte mi vědět, jestli to potřebujete, a možná budu moci něco uvařit.


Linux
  1. jak mohu vyhledat soubory a zazipovat je do jednoho souboru zip

  2. Existuje způsob, jak oříznout soubor NETCDF?

  3. Jak mohu upravit soubor, pokud neexistuje vi, vim, joe atd.?

  1. Přesouvání souborů na Linuxu bez mv

  2. gzip všechny soubory bez jejich smazání

  3. Existuje způsob, jak nainstalovat Apache Bench (ab) bez instalace apache

  1. Snadný způsob, jak skrýt soubory a adresáře v Linuxu

  2. Existuje způsob, jak upravit existující záložku nautilus (správce souborů)?

  3. Jak mohu zapisovat soubory na USB, aniž bych byl root?