zip 파일의 특정 레이어/레벨만 압축 해제, unzip [off] 사용

zip 파일의 특정 레이어/레벨만 압축 해제, unzip [off] 사용

이 명령을 사용하여 문서 루트 백업이 포함된 zip 파일을 추출했습니다.

unzip /var/www/html/html-2018-01-08-02\:52\:11.zip -d /var/www/html/

이렇게 하면 문서 루트 내의 모든 데이터가 추출되지만 문제가 있습니다. 현재 상태는 중복된 문서 루트입니다.

/var/www/html/var/www/html/DATA

물론 데이터를 다시 이동한 mv다음 를 사용하여 중복 문서 루트를 제거 할 수 있지만 cd /var/www/html && rm -rf /var/www/html가장 쉬운 해결 방법은 양식을 통해 직접 수행하는 것입니다 unzip.

애초에 중복이 발생하지 않기를 바랍니다.


사용 방법은 무엇입니까? zip 파일의 특정 레이어/레벨만 압축을 해제합니까 unzip?

예를 들어 내 우편번호에는 다음이 포함됩니다.

  • 첫 번째 줄: /var.
  • 2 층: /var/www.
  • 3층: /var/www/html/.

네 번째 레벨(물론 0부터 시작하는 인덱싱에서는 세 번째 레벨)의 인덱스 노드만 추출하고 싶습니다.

최종 상태는 다음과 같아야 합니다.

/var/www/html/DATA

답변1

unzip경로별로 추출할 파일을 제한 할 수 있습니다 .

와일드카드 사용:

unzip foo.zip '*/*/*/*'

리터럴 구문을 사용하십시오.

unzip foo.zip 'var/www/html/*'

예를 들어:

$ zipinfo ../1.zip 
Archive:  ../1.zip
Zip file size: 1134 bytes, number of entries: 8
drwxrwxr-x  3.0 unx        0 bx stor 18-Jan-28 13:53 1/
drwxrwxr-x  3.0 unx        0 bx stor 18-Jan-28 13:53 1/2/
drwxrwxr-x  3.0 unx        0 bx stor 18-Jan-28 13:53 1/2/3/
drwxrwxr-x  3.0 unx        0 bx stor 18-Jan-28 13:53 1/2/3/4/
-rw-rw-r--  3.0 unx        0 bx stor 18-Jan-28 13:53 1/2/3/4/d
-rw-rw-r--  3.0 unx        0 bx stor 18-Jan-28 13:53 1/2/3/c
-rw-rw-r--  3.0 unx        0 bx stor 18-Jan-28 13:53 1/2/b
-rw-rw-r--  3.0 unx        0 bx stor 18-Jan-28 13:53 1/a
8 files, 0 bytes uncompressed, 0 bytes compressed:  0.0%
$  unzip ../1.zip '*/*/*/*'
Archive:  ../1.zip
   creating: 1/2/3/
   creating: 1/2/3/4/
 extracting: 1/2/3/4/d               
 extracting: 1/2/3/c

관련 정보