Je dois parfois modifier un fichier .Zip ou .jar. Je déplace donc généralement le fichier vers /tmp
, extrait tous les fichiers avec unzip
, édite quelques fichiers, puis re-compresse les fichiers. Cela fonctionne, mais cela peut être fastidieux. Existe-t-il un utilitaire ou un script Shell que je puisse utiliser pour modifier un fichier dans un fichier Zip sans appeler explicitement unzip
et Zip
(même s'il ne s'agit que d'un wrapper autour de ces commandes)?
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
, éditer et actualiser 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
, le édite dans vi
puis le rajoute à l’archive tout en "jonglant" le chemin. Ajoutez à votre .bash_profile, en supposant que bash
...
EDIT: Vous trouverez ci-dessous une version qui fonctionne avec les sous-dossiers de l'archive ... Remarque, n'utilisez pas de barre oblique avant le nom du dossier (c'est-à-dire 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. Aussi pas sûr si cela fonctionnera avec le chemin absolu du fichier Zip. Meilleur bâton avec 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 vais probablement finir par utiliser celui-ci aussi!
Une autre modification: non testée, mais j'ai lu que vim
et emacs
modifieront-ils les fichiers jar directement?
Vim prend en charge l’édition transparente de fichiers au sein de fichiers Zip. Il suffit d'exécuter:
vim file.Zip
et vous verrez une liste de fichiers dans l'archive Zip. Choisissez celui que vous voulez éditer, changez ce que vous voulez et quittez avec: x
Si vim
répond avec:
Impossible d'apporter des modifications, 'modifiable' est désactivé
..il suffit d'exécuter :set modifiable
ou :set ma
(source: https://stackoverflow.com/questions/5745506/vim-modifiable-is-off )
Réponse courte: NON.
Si c'est un wrapper, vous appelez ces commandes. Quoi qu'il en soit, le mieux que je puisse faire est d'ouvrir le fichier en utilisant file-roller
, si vous êtes dans un environnement X, cela pourrait fonctionner avec un simple double clic, selon votre configuration. Vous pouvez ensuite double-cliquer sur le fichier compressé pour l'ouvrir puis vous pouvez l'éditer:
$ 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 devient compliqué si vous avez des archives compressées contenant plusieurs fichiers. Faites-moi savoir si c'est ce dont vous avez besoin et je pourrais peut-être cuisiner quelque chose.
Courte réponse pédante; non. Si vous songez à la compression, vous utilisez la redondance pour raccourcir les fichiers, de sorte que toute modification modifie l’ensemble du fichier dans l’archive, éventuellement l’archive.
Si vous êtes moins théorique, plus pratique, plus "Je ne veux pas avoir à décompresser/Zip manuellement", il existe des outils que vous pouvez utiliser. ark sur Linux est celui que j'ai utilisé. Vous pouvez également monter l'archive avec Fuse-Zip , bien que ce soit probablement plus de travail qu'un fichier temporaire.
J'ai écrit un plugin Vim qui étend le stock Zip.vim pour parcourir et éditer des fichiers Zip imbriqués.
Selon la page de manuel relative à Zip
(version en ligne pour faciliter la consultation: http://linux.die.net/man/1/Zip ), La commande Zip
a un drapeau -u
qu'elle décrit comme suit:
Remplacez (mettez à jour) une entrée existante dans l'archive Zip uniquement si elle a été modifiée plus récemment que la version déjà présente dans l'archive Zip.
Le gestionnaire de fichiers Directory Opus 12 vous permettra de parcourir le fichier Zip, puis de glisser-déposer le fichier édité depuis un autre dossier vers celui-ci, d’écraser le fichier que vous souhaitez éditer. Très facile
Vous pouvez utiliser l'éditeur de texte KDE standard, par exemple: