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%