이 명령을 사용하세요
find . -name '*.zip' -exec unzip '{}' ';'
.zip 아래에서 모든 zip 파일을 찾을 수 있습니다. (디렉토리)를 현재 작업 디렉토리에 추출하고, 하지만, 구조가 사라집니다.
/backUp/pic1/1-1.zip
/backUp/pic1/1-2.zip
/backUp/pic2/2-1.zip
/backUp/pic2/2-2.zip
/backUp/pic3/3-1.zip
/backUp/pic3/3-2.zip
/backUp/pic3/3-3.zip
Current command result:
/new/1-1
/new/1-2
/new/2-1
/new/2-2
/new/3-1
/new/3-2
/new/3-3
desired result
/new/pic1/1-1
/new/pic1/1-2
/new/pic2/2-1
/new/pic2/2-2
/new/pic3/3-1
/new/pic3/3-2
/new/pic3/3-3
여기에 질문했지만 코드가 작동하지 않습니다 이 명령에서 dirname과 basename은 무엇이어야 합니까?
답변1
대신 find
with 매개변수를 사용할 수 있습니다 .-execdir
-exec
-execdir
현재 작업 디렉터리가 아닌 파일이 있는 디렉터리에서 명령을 실행합니다.
예:
find . -name '*.zip' -execdir unzip {} \;
이것이 정확히 귀하가 요구하는 내용은 아니지만 원하는 결과를 얻기 위해 추가할 수 있는 몇 가지 단계가 있습니다.
mkdir new
cp -a backUP/* new/
#run unzip operation
cd new
find . -name '*.zip' -execdir unzip {} \;
#remove all .zip files
find . -name '*.zip' -exec rm {} \;