답변:
백 슬래시를 사용하고 있기 때문에 이것이 Windows라고 가정합니다.
가져 7za.exe (의 명령 줄 버전 7-ZIP을 )와에 넣어 %PATH%
.
그런 다음 Images\
디렉토리 에서 이것을 실행하십시오 .
for /f "tokens=* usebackq" %G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%~G.zip" "%~G"
또는 배치 스크립트에서 :
for /f "tokens=* usebackq" %%G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%%~G.zip" "%%~G"
Linux를 사용한다고 가정하면 다음과 같이 Bash 스크립트를 사용할 수 있습니다.
#!/bin/bash
IFS=$'\n'
for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
zip -r "$f" "$f"
done
이 스크립트는 첫 번째 인수를 폴더 (이 경우 이미지)로 가져와 정확히 한 수준의 깊이를 되찾아 모든 폴더 (미국, 이탈리아 및 일본)를 가져와 같은 위치에 압축합니다.
오래된 zip 파일이나 소스 폴더는 삭제하지 않습니다. Zip은 기존 zip 파일을 감지하고 다시 실행할 때 업데이트 할 수있을 정도로 똑똑합니다. 그러나 소스 폴더에서 파일을 삭제하면 zip 파일에서는 삭제 되지 않습니다 . 기존 파일을 미리 삭제하여이 동작을 피할 수 있습니다.
이 루프는
bash
다음 에서 사용할 수 있습니다 .for i in */; do zip -r "${i%/}.zip" "$i"; done
i
루프 변수의 이름입니다.*/
는 현재 디렉토리의 모든 하위 디렉토리를 의미하며 해당 이름에 슬래시를 포함합니다.cd
이를 실행하기 전에 올바른 위치에 있는지 확인하십시오 ."$i"
뒤에 슬래시를 포함하여 해당 디렉토리의 이름을 지정하십시오. 인용 부호는 디렉토리 이름의 공백이 문제를 일으키지 않도록합니다. 후행 슬래시가 제거 된${i%/}
것과 같으$i
므로이를 사용하여 zip 파일의 이름을 구성 할 수 있습니다.이것이 작동하는 방식을 보려면
echo
앞에를 포함zip
하면 명령 대신 실행 된 명령이 표시됩니다.