.zipや.jarファイルに変更を加える必要がある場合があるので、通常はそのファイルを/tmp
に移動し、すべてのファイルをunzip
で抽出し、いくつかのファイルを編集してから、ファイルを再圧縮します。これはうまくいきますが、それは面倒です。明示的にunzip
とZip
を呼び出さずにZipファイル内のファイルを編集するために使用できるユーティリティまたはシェルスクリプトはありますか(たとえこれらのコマンドの単なるラッパーであっても)。
解凍する前に、アーカイブ内のファイルの名前を知っていますか? /tmp
に解凍し、Zipを編集して更新する関数を作成できます。
zipedit(){
echo "Usage: zipedit archive.Zip file.txt"
unzip "$1" "$2" -d /tmp
vi /tmp/$2 && Zip -j --update "$1" "/tmp/$2"
}
それが言うように、使用法は次のとおりです。
zipedit myarchive.Zip myfile.txt
これは、指定されたファイルをアーカイブから解凍し、それを/tmp
に保存し、それをvi
に編集してから、パスを "junking"しながらアーカイブに追加します。 bash
...と仮定して、あなたの.bash_profileに追加してください。
EDIT:以下はアーカイブ内のサブフォルダを扱うバージョンです。フォルダ名の前にスラッシュを使わないでください(すなわちuse myfolder/file.txt
は/myfolder/file.txt
ではありません。アーカイブにまだ存在していないファイルを編集した場合は、それが自動的に作成されます。 Zipファイルへの絶対パスで動作するかどうかもわかりません。親戚とのベストスティック。
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"
}
質問ありがとうございます。私もおそらくこれを使うことになるでしょう!
もう1つの編集:テストされていませんが、vim
とemacs
はどちらもjarファイルを直接編集するのでしょうか。
VimはZipファイル内のファイルの透過的な編集をサポートしています。ただ実行する:
vim file.Zip
zipアーカイブ内のファイルのリストが表示されます。編集したいものを選択し、必要なものを変更して終了します。x
vim
が次のように応答した場合:
変更できません。「変更可能」はオフです
.. :set modifiable
または:set ma
を実行するだけです(source: https://stackoverflow.com/questions/5745506/vim-modifiable-is-off )
短い答え:いいえ。
それがラッパーなら、あなたはこれらのコマンドを呼び出しています。とにかく、私が考えることができる最もよいことはあなたがX環境にいるならfile-roller
を使ってファイルを開くことであり、それはあなたの設定次第で、単純なダブルクリックで動作するかもしれません。圧縮ファイルをダブルクリックして開き、編集することができます。
$ file-roller b3.Zip
編集したファイルを保存すると、このダイアログが表示されます。
このためのスクリプトを作成することもできますが、複数のファイルを含む圧縮アーカイブがある場合、それは複雑になります。それがあなたが必要とするものであれば私に知らせてください、そして私は何かを調理することができるかもしれません。
簡潔な答えいいえ。圧縮を考えているなら、内部のファイルを短くするために冗長性を使っているので、どんな編集でもアーカイブ内のファイル全体、おそらくアーカイブを変更します。
理論的ではなく、より実用的で、「手動で解凍する必要がないようにしたい」場合は、使用できるツールがあります。 Linux上のark は私が使ったものです。アーカイブを Fuse-Zip でマウントすることもできますが、おそらく一時ファイルよりも作業が多くなります。
私は入れ子になったZipファイルを閲覧し編集するために、Zip.vimを拡張するVimプラグインを書きました。
Zip
のmanページによると(簡単に参照できるオンライン版: http://linux.die.net/man/1/Zip )、 Zip
コマンドには、-u
フラグがあります。
Zipアーカイブ内の既存のエントリが、Zipアーカイブ内に既に存在するバージョンよりも最近変更されている場合にのみ置き換えます(更新します)。
Directory Opus 12ファイルマネージャを使用すると、Zipをブラウズしてから編集したファイルを別のフォルダからそのフォルダにドラッグアンドドロップし、編集したいファイルを上書きすることができます。非常に簡単
たとえば、標準のKDEテキストエディタを使用できます。