찾기: 'zip': 해당 파일이나 디렉터리가 없습니다.

찾기: 'zip': 해당 파일이나 디렉터리가 없습니다.

저는 WSL(Ubuntu)을 사용하고 있으며 파일을 여러 하위 폴더에 재귀적으로 압축하려고 합니다.

Main Folder .
  SubFolder 1's files get zipped into a .zip
  SubFolder 2's files get zipped into a .zip
  SubFolder 3's files get zipped into a .zip
  SubFolder 4's files get zipped into a .zip
  SubFolder 5's files get zipped into a .zip

etc.

홈 폴더로 이동하여 다음을 실행합니다.

find . -type d -maxdepth 1 -execdir zip -r '{}.zip' '{}' \;

이 작업을 수행한 후 다음과 같은 스팸 이메일을 받았습니다.

찾기: 'zip': 해당 파일이나 디렉터리가 없습니다.

exec나는 또한 대신 사용하여 똑같은 줄을 시도했지만 execdir동일한 결과를 얻었습니다. 누구든지 문제를 지적할 수 있나요?

답변1

이 오류는 명령을 설치하지 않았음을 의미합니다 zip. 테스트해 보십시오.command -v zip;빈 출력은 설치되지 않았음을 의미합니다. 설치하십시오 sudo apt install zip.


zip파일을 각 디렉토리 로 분리들어오지 못하게 하다commnad의 디렉토리 -j에 옵션을 추가 해야 합니다 :zip

find . -mindepth 1 -maxdepth 1 -type d -execdir zip -jr '{}.zip' '{}' \;

-maxdepth이전에 옵션을 지정 하고 현재 디렉터리 압축을 무시하거나 두 가지를 다음으로 바꾸는 옵션 -type d도 추가해야 합니다.-mindepth 1[ ! -name . -prune;POSIX 조회를 특정 깊이로 제한하시겠습니까? ]이므로 명령은 다음과 같습니다.

find . ! -name . -prune -type d -execdir zip -jr '{}.zip' '{}' \;

또는 for 루프를 사용할 수 있습니다.

for thing in ./*; do
    [[ -d "${thing}" ]] && zip -jr "${thing}.zip" "${thing}";
done

사용된 옵션으로 인해 -j서로 다른 하위 디렉터리에서 단일 zip 파일로 수집된 유사한 이름을 가진 파일이 있는 경우 명령은 동일한 파일 이름으로 인해 압축을 중지합니다.

관련 정보