내 파일은 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 f
archive.zip
unzip {}
발견되면-execdir
파일이 발견된 디렉터리( )에서 명령을 실행하고{}
발견된 파일의 이름을 인용합니다(find
이 경우 실제 파일 이름으로 대체됨archive.zip
).
그것은 ...이라고 말하는 것과 같은 효과가 있습니다. cd 001/; unzip archive.zip; cd ..; cd 002/; unzip archive.zip
(제 생각에는 당신이 아이디어를 얻은 것 같습니다.)
노트실행될 명령은 ;
실제로 로 이스케이프되어야 합니다 \
. 그렇지 않으면 쉘은 명령에 도달하기 전에 이를 해석합니다 find
.
또한 dir/
디렉토리 자체 archive.zip
에추출하고 싶지 않음, 아래의 첫 번째 하위 디렉터리 수준에서 시작하는 파일만 고려 되도록 하려면 -mindepth 1
시작점 뒤에 인수를 추가 해야 합니다 ..
find
dir/