GNU/Linux >> Tutoriels Linux >  >> Linux

Existe-t-il un moyen de modifier des fichiers à l'intérieur d'un fichier zip sans les extraire explicitement au préalable ?

Vim prend en charge l'édition transparente de fichiers dans des fichiers zip. Exécutez simplement :

vim file.zip

et vous verrez une liste de fichiers à l'intérieur de l'archive zip. Choisissez celui que vous voulez modifier, changez ce que vous voulez, et quittez avec :x

Si vim répond par :

Impossible d'apporter des modifications, "modifiable" est désactivé

.. exécutez simplement :set modifiable ou :set ma (source :https://stackoverflow.com/questions/5745506/vim-modifiable-is-off)


Connaissez-vous le nom du fichier dans l'archive avant de le décompresser ? Vous pouvez créer une fonction pour décompresser en /tmp , modifiez et actualisez le zip :

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

Comme il est dit, l'utilisation est :

zipedit myarchive.zip myfile.txt

Cela décompresse le fichier nommé de l'archive, l'enregistre dans /tmp , l'édite en vi puis le rajoute à l'archive, tout en "éliminant" le chemin. Ajouter à votre .bash_profile, en supposant bash ...

MODIF : Ci-dessous se trouve une version qui fonctionne avec des sous-dossiers à l'intérieur de l'archive... Remarque, n'utilisez pas de barre oblique avant le nom du dossier (c'est-à-dire utilisez myfolder/file.txt pas /myfolder/file.txt ). Si vous éditez un fichier qui n'existait pas déjà dans l'archive, il le créera pour vous. Je ne sais pas non plus si cela fonctionnera avec le chemin absolu du fichier zip. Mieux vaut s'en tenir à un parent.

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

Merci pour la question. Je finirai probablement par utiliser celui-ci aussi !

Autre modification :non testée, mais j'ai lu que vim et emacs les deux modifieront-ils directement les fichiers jar ?


Réponse courte :NON.

Si c'est un wrapper, vous êtes appeler ces commandes. Quoi qu'il en soit, le mieux que je puisse penser est d'ouvrir le fichier en utilisant file-roller , si vous êtes dans un environnement X, cela peut fonctionner avec un simple double-clic, selon votre configuration. Vous pouvez ensuite double-cliquer sur le fichier compressé pour l'ouvrir puis vous pouvez le modifier :

$ file-roller b3.zip 

Lorsque vous enregistrez votre fichier modifié, vous devriez obtenir cette boîte de dialogue :

Vous pouvez également créer un script pour cela, mais cela se complique si vous avez des archives compressées contenant plusieurs fichiers. Faites-moi savoir si c'est ce dont vous avez besoin et je pourrai peut-être préparer quelque chose.


Linux
  1. Un moyen facile de masquer des fichiers et des répertoires sous Linux

  2. Imprimer le contenu du fichier sans les premières et dernières lignes ?

  3. Existe-t-il un moyen de recadrer un fichier NETCDF ?

  4. Existe-t-il un moyen d'installer Apache Bench (ab) sans installer apache

  5. Existe-t-il un moyen approprié d'effacer les journaux ?

Comment éditer des fichiers PDF sous Linux de la manière la plus simple possible

Stéganographie - Masquer les fichiers à l'intérieur des images sous Linux

Conseils Vim - Modifier des fichiers distants avec Vim sous Linux

Comment éditer un fichier sans changer ses horodatages sous Linux

Copier le contenu du fichier dans le presse-papiers sans les afficher

Comment compresser un fichier sous Linux