여러 디렉터리에서 동일한 이름을 가진 파일 추출

여러 디렉터리에서 동일한 이름을 가진 파일 추출

내 파일은 archive.zip다음과 같은 여러 디렉터리에 있습니다.

dir/001/archive.zip
dir/002/archive.zip
dir/003/archive.zip
...

archive.zip명령줄을 사용하여 다른 이름을 가진 모든 디렉터리의 모든 파일을 재귀적으로 압축을 풀 수 있는 방법이 있습니까 ? ZIP 파일의 내용은 ZIP 파일과 동일한 디렉터리에 추출되어야 합니다.

폴더 dir는 공통이고, archive.zip상위 폴더의 이름만 다릅니다.

미리 감사드립니다!

답변1

이것은 직업인 것 같습니다 find. 디렉터리로 변경 dir하고 다음 명령을 실행합니다.

find . -type f -name "archive.zip" -execdir unzip {} \;
  • 그러면 이름이 ( )인 파일에 대해 현재( , 귀하의 경우 .같음)로 시작하는 모든 디렉토리를 검색합니다.dir-type farchive.zip
  • unzip {}발견되면 -execdir파일이 발견된 디렉터리( )에서 명령을 실행하고 {}발견된 파일의 이름을 인용합니다( find이 경우 실제 파일 이름으로 대체됨 archive.zip).

그것은 ...이라고 말하는 것과 같은 효과가 있습니다. cd 001/; unzip archive.zip; cd ..; cd 002/; unzip archive.zip(제 생각에는 당신이 아이디어를 얻은 것 같습니다.)

노트실행될 명령은 ;실제로 로 이스케이프되어야 합니다 \. 그렇지 않으면 쉘은 명령에 도달하기 전에 이를 해석합니다 find.

또한 dir/디렉토리 자체 archive.zip추출하고 싶지 않음, 아래의 첫 번째 하위 디렉터리 수준에서 시작하는 파일만 고려 되도록 하려면 -mindepth 1시작점 뒤에 인수를 추가 해야 합니다 ..finddir/

관련 정보