zipファイルにファイルを追加し、bashスクリプトでターゲットディレクトリを指定できますか?つまり、zip構造にディレクトリが含まれている場合、私のファイルが入るディレクトリを選択できますか?コマンドラインはどのようなものですか?
答え1
ZIPファイルが次のようになると思います。
foo/
|--- bar/
| |--- file1.txt
|--- baz/
| |--- file2.txt
そして、あなたは追加したいファイル3.txt到着金持ち/バズ/。
必要なディレクトリ構造をここで作成し、そのmkdir -p foo/baz/
場所にファイルをコピーします。その後、zip -ur foo.zip foo/
既存のアーカイブを更新するために使用します。foo.zip。
解凍する必要がないのでこれを行います。
デモ
$> # setup
$> mkdir -p foo/bar/ foo/baz/
$> touch foo/bar/file1.txt foo/baz/file2.txt
$> zip -r foo.zip foo/
$> rm -rf foo/
$> zipinfo foo.zip
Archive: foo.zip
Zip file size: 770 bytes, number of entries: 5
drwxrwxr-x 3.0 unx 0 bx stor 19-Nov-14 17:02 foo/
drwxrwxr-x 3.0 unx 0 bx stor 19-Nov-14 17:06 foo/bar/
-rw-rw-r-- 3.0 unx 0 bx stor 19-Nov-14 17:03 foo/bar/file1.txt
drwxrwxr-x 3.0 unx 0 bx stor 19-Nov-14 17:03 foo/baz/
-rw-rw-r-- 3.0 unx 0 bx stor 19-Nov-14 17:03 foo/baz/file2.txt
5 files, 0 bytes uncompressed, 0 bytes compressed: 0.0%
$> # solution
$> mkdir -p foo/baz/
$> cp path/to/file3.txt foo/baz/file3.txt
$> zip -ur foo.zip foo/
$> rm -rf foo/
$> # validation
$> zipinfo foo.zip
Archive: foo.zip
Zip file size: 932 bytes, number of entries: 6
drwxrwxr-x 3.0 unx 0 bx stor 19-Nov-14 17:02 foo/
drwxrwxr-x 3.0 unx 0 bx stor 19-Nov-14 17:06 foo/bar/
-rw-rw-r-- 3.0 unx 0 bx stor 19-Nov-14 17:03 foo/bar/file1.txt
drwxrwxr-x 3.0 unx 0 bx stor 19-Nov-14 17:03 foo/baz/
-rw-rw-r-- 3.0 unx 0 bx stor 19-Nov-14 17:03 foo/baz/file2.txt
-rw-rw-r-- 3.0 unx 0 bx stor 19-Nov-14 17:07 foo/baz/file3.txt
6 files, 0 bytes uncompressed, 0 bytes compressed: 0.0%