GNU/Linux >> Linux の 問題 >  >> Linux

最初に明示的に解凍せずに、zip ファイル内のファイルを編集する方法はありますか?

Vim は、zip ファイル内の透過的なファイル編集をサポートしています。実行するだけです:

vim file.zip

zip アーカイブ内のファイルのリストが表示されます。編集したいものを選択し、必要なものを変更して、:x で終了します

vim の場合 次のように応答します:

<ブロック引用>

変更できません。「変更可能」はオフです

.. :set modifiable を実行するだけです または :set ma (ソース:https://stackoverflow.com/questions/5745506/vim-modifiable-is-off)


アーカイブを解凍する前に、アーカイブ内のファイルの名前を知っていますか? /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 で編集します 次に、パスを「ジャンク」しながら、アーカイブに追加します。 bash を想定して、.bash_profile に追加します。 ...

編集: 以下は、アーカイブ内のサブフォルダーで動作するバージョンです... フォルダー名の前にスラッシュを使用しないでください (つまり、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"
}

ご質問ありがとうございます。私もこれを使うことになるでしょう!

別の編集:テストされていませんが、その vim を読みました と emacs どちらも jar ファイルを直接編集しますか?


短い答え:いいえ

それがラッパーなら、あなたは これらのコマンドを呼び出します。とにかく、私が考えることができる最善の方法は、 file-roller を使用してファイルを開くことです 、X 環境にいる場合、セットアップによっては、単純なダブルクリックで機能する場合があります。次に、圧縮ファイルをダブルクリックして開き、編集することができます:

$ file-roller b3.zip 

編集したファイルを保存すると、次のダイアログが表示されます:

このためのスクリプトを作成することもできますが、複数のファイルを含む圧縮アーカイブがある場合は複雑になります。それが必要かどうか教えてください。何か料理できるかもしれません。


Linux
  1. ファイルを検索して 1 つの zip ファイルに圧縮する方法

  2. 既存の nautilus (ファイルマネージャ) ブックマークを編集する方法はありますか?

  3. root にならずに USB にファイルを書き込むにはどうすればよいですか?

  1. Linuxでmvなしでファイルを移動する

  2. ApacheをインストールせずにApache Bench(ab)をインストールする方法はありますか

  3. ログをクリアする適切な方法はありますか?

  1. Linuxでファイルとディレクトリを隠す簡単な方法

  2. NETCDF ファイルをトリミングする方法はありますか?

  3. ファイルの中断された scp を再開する方法はありますか?