2011-10-22 4 views
2

나는 여러개의 zip 파일을 가지고 있는데, bash 스크립트를 사용하여 특정 파일의 압축을 자동화하는 중이다. 내가 원하는 파일의 이름을 알고 있지만 폴더 이름을 모른다. 하나의 폴더 깊이입니다이름이 알려지지 않은 폴더에서 압축을 풉니 다?

어떻게 이러한 파일을 추출 할 수 있습니까? 폴더를 삭제하는 것이 좋습니다.

답변

0

unzip somefile.zip "*/blah.txt"을 사용해 보셨습니까?

unzip -j somezip.zip *somefile.txt 

을 -j zip 파일의 폴더 구조를 정크 별표 일치하는 와일드 카드를 제공합니다

0

여기에 어떤 깊이에서 특정 파일의 압축을 풀고 밖으로 방식의 폴더 경로를 정크하는 방법 어떤 경로를 따라.

find /path/to/root/ -name 'zipname.zip' -print0 | xargs -0 unzip 

print0 그들에 공백을 가진 파일 또는 경로와 함께 작동하도록 명령을 할 수 있습니다 :

0
당신은 압축을 해제하는 데 필요한 파일을 찾을 수 find를 사용할 수

xargs은 압축 해제 호출합니다. -0xargs의 옵션으로 print0과 호환됩니다.

1

당신은에 있다면 :

some_directory/

와 zip 파일 말, 하위 디렉토리의 수에 있습니다

some_directory/foo는

find ./ -name myfile.zip -exec unzip {} -d /directory \; 

편집 :로 두 번째 부분에 대해 내가 가정 한 zip 파일이 들어있는 디렉토리를 제거 하시겠습니까?

find ./ -name myfile.zip -exec unzip {} -d /directory \; -exec echo rm -rf `dirname {}` \; 

"echo." 그것은 위생 ​​검사입니다. 나는 항상 이와 같은 루프/반복 시퀀스에서 rm -rf와 같은 파괴적인 것을 실행할 때 먼저 echo한다. 행운을 빕니다!

+0

전화하세요. 나는 그가 하나의 우편 번호 안에 특정 하위 폴더를 요구하고 있다는 것을 잘못 읽고 있지만, 맞다. 그는 알려지지 않은 파일 시스템 하위 폴더 안에 특정 zip 파일을 요구하고있다. – davidethell

관련 문제