特定のディレクトリに圧縮しますか?

特定のディレクトリに圧縮しますか?

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%

関連情報