
파일의 디렉터리 계층 구조가 포함된 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"는 "txt" 파일 5개를 모두 추출합니다.
디렉토리 경로 어딘가에 "acme"라는 문자열이 있는 3개의 "txt" 파일만 추출하도록 이 Linux 명령을 어떻게 수정할 수 있습니까(그러므로 2.txt, 3.txt 및 4.txt만 추출됩니다)?
답변1
귀하의 예제는 작업 디렉토리에 파일이 unzip foo.zip *.txt
없기 때문에 작동했습니다 . *.txt
그렇지 않으면 *.txt
쉘에 의해 디렉토리에 있는 텍스트 파일의 이름으로 확장되었을 것입니다. 안전한 편이 되려면 인용을 해야 합니다.
unzip
글로브를 사용 하므로
unzip foo.zip '*acme*/*.txt'
또는
unzip foo.zip '*acme*.txt'
원래 디렉토리 구조를 복원하고 파일을 현재 작업 디렉토리에 추출하지 않으려면 다음 옵션을 추가하십시오 -j
.
unzip -j foo.zip '*acme*/*.txt'