저는 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 파일로 수집된 유사한 이름을 가진 파일이 있는 경우 명령은 동일한 파일 이름으로 인해 압축을 중지합니다.