특정 디렉토리로 압축하시겠습니까?

특정 디렉토리로 압축하시겠습니까?

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%

관련 정보