Linux unzip 명령이 이름에 주어진 문자열이 포함된 디렉토리에서만 파일을 추출하도록 합니다.

Linux unzip 명령이 이름에 주어진 문자열이 포함된 디렉토리에서만 파일을 추출하도록 합니다.

파일의 디렉터리 계층 구조가 포함된 zip 아카이브가 있습니다. Linux unzip 명령을 사용하여 파일을 가리키는 디렉터리 경로 어딘가에 특정 문자열이 있는 이러한 파일의 하위 집합을 추출하고 싶습니다.

예를 들어 foo.zip 파일에 다음 파일이 포함되어 있다고 가정합니다.

a/1.txt
acme/2.txt
a/acme/b/3.txt
a/b/acmenet/c/4.txt
a/b/c/5.txt
a/acme/d/6.php

Linux 명령 "unzip foo.zip *.txt"는 5개의 "txt" 파일을 모두 추출합니다.

디렉터리 경로 어딘가에 "acme" 문자열이 있는 3개의 "txt" 파일만 추출하도록(따라서 2.txt, 3.txt 및 4.txt만 추출하도록) 이 Linux 명령을 수정하려면 어떻게 해야 합니까?

답변1

unzip foo.zip *.txt귀하의 예제는 작업 디렉토리에 파일이 없기 때문에 작동합니다 . *.txt그렇지 않으면 *.txt 쉘이 디렉토리의 텍스트 파일 이름으로 확장됩니다. 안전한 편이 되려면 인용을 해야 합니다.

unzipglob을 사용 하므로

unzip foo.zip '*acme*/*.txt'

심지어

unzip foo.zip '*acme*.txt'

원래 디렉터리 구조를 복원하고 파일을 현재 작업 디렉터리로 추출하지 않으려면 다음 옵션을 추가하세요 -j.

unzip -j foo.zip '*acme*/*.txt'

관련 정보