여러 폴더를 개별 zip 파일로 일괄 압축


12

개별 zip 파일로 압축해야하는 수십 개의 폴더가 있습니다.

Finder에서 이러한 폴더를 모두 선택하고 "[X] 항목 압축"을 수행하면 모든 폴더가 포함 된 하나의 zip 파일이 생성되지만 원하는 것은 폴더 당 하나의 zip 파일 입니다 .

"아카이브 작성"조치를 사용하여 Automator로 워크 플로우를 작성하려고 시도했지만 동일한 방식으로 작동합니다. 여러 파일 / 폴더를 입력하면 단일 zip 파일이 출력됩니다. 작업이 각 항목에서 개별적으로 실행되도록 지정할 방법이 없습니다.

기본적으로 파인더에서 한 번에 하나씩 모든 폴더에서 "압축"을 신중하게 실행하지 않아도되는 방법을 찾고 있습니다. 이것을 자동화하는 방법이 있습니까?


1
Zip 아카이브 파일 이름을 증가시키는 데 사용되는 코드를 개선하기 위해 답변을 업데이트하여 Finder 컨텍스트 메뉴 압축 [n] 항목 명령이 파일 이름을 증가시키는 방법을 모방했습니다.
— user3439894

미안 해요, 불필요한을 제거하기 위해 다시 한 번 코드를 업데이트 popd하고있는 치명적인 오타가 수정 for i in $bn*.zip; do되었습니다한다 for i in $bn *.zip; do. $bn와 사이의 공백 *.zip이 없습니다. 이 공백이 없어야합니다. 따라서 구현에서 업데이트하지 않으면 공간이 File Name 2.zip있을 때 단계적으로 진행하십시오 basename.
— user3439894

답변:


14

여기이고 자동화 서비스 1 에 사용할 수 파인더 때 폴더가 선택되고 에뮬레이트 컨텍스트 메뉴 [N] 항목 압축을 명령 제외 그것이 만들어 개별 된 zip 파일 각각 선택 용 폴더 의 이름 선택의 폴더 . 경우 폴더 Name.zip의 파일이 이미 다음 존재 " 2"( 공간 2)이 추가되어 파일 이름 , 예를 들어, 폴더 이름 2.zip . 이것은 기존 zip 아카이브 파일을 보장 합니다를 터치하지 않으면 필요에 따라 zip 아카이브 파일 이름 이 자동으로 증가합니다.

1 에서 맥 OS 모하비 , 이상 자동화 서비스 불리며 빠른 조치 . 다른 사소한 명칭 차이도 있지만 사전 macOS Mojave Automator 워크 플로우와 비교할 때 더 분명해야합니다.

서비스를 만들려면 : 1

  1. Automator를 열고 서비스 1 또는 파일 > 새로 작성 > Automator 가 이미 열려있는 경우 서비스를 선택하십시오 .

  2. 설정 서비스는 선택 수신 에 폴더 및 에 로 찾기 .

  3. 추가 실행 쉘 스크립트 액션을 설정 : 셸 에 / 빈 / bash는 과 : 패스 입력 에 인수로 다음과 같은 추가 코드를 :

    for f in "$@"; do
    
        dn="$(dirname "$f")"
        bn="$(basename "$f")"
    
        cd "$dn" || exit
    
        if [[ ! -e "$bn.zip" ]]; then
            ditto -c -k --sequesterRsrc --keepParent "$f" "$bn.zip"
        else
            n=2
            for i in $bn *.zip; do
                if [[ "$bn $n.zip" == "$i" ]]; then
                    n="$(( n + 1 ))"
                fi
            done
            ditto -c -k --sequesterRsrc --keepParent "$f" "$bn $n.zip"
        fi
    
    done
    
    afplay /System/Library/Sounds/Purr.aiff
  4. 서비스를 다른 이름 으로 저장 : 폴더를 별도로 압축

서비스를 이용하려면 :

에서 찾기 또는 ▼에 데스크톱 여러 선택 폴더를 , 다음 마우스 오른쪽 버튼으로 클릭 하고 선택 압축 폴더 별도로를 아래에서 서비스 .

또는 대상 폴더를 선택한 후 메뉴 표시 줄 에서 Finder > 서비스 > 별도로 폴더 압축을 클릭 할 수도 있습니다 .

Finder가 zip 아카이브 파일을 작성하는 방법을 모방하면서 개별 zip 아카이브에서 한 번에 여러 폴더를 개별적으로 동시에 동시에 압축하는 방법이 있습니다. zip 아카이브는 __MACOSX 서브 디렉토리에 보존 된 자원 포크 및 HFS 메타 데이터를 포함하며 아카이브 작성에 (없이 )를 사용할 때와 같이 완전한 경로 이름이 아닌 destination-archive 에 상위 디렉토리 이름 소스 만 포함합니다 .zip-j

개별적으로 압축 폴더 이미지

폴더를 별도로 압축-Automator 서비스


귀하의 솔루션과 @ababak을 모두 확인했습니다. 그들은 정확히 동일한 결과를 제공하며 ababak의 구현이 훨씬 쉽습니다. 어쨌든 나는 투표했다.
— turzifer

15

Automator를 사용하고 싶지 않고 Archive Utility의 설정을 변경해도 괜찮은 경우 기본 제공되는 대체 솔루션이 있습니다.

  1. / System / Library / CoreServices / Applications /에있는 Archive Utility.app를 엽니 다.
  2. 파일> 환경 설정으로 이동
  3. "아카이브 형식 사용"환경 설정을 "Zip 아카이브"로 변경하십시오.
  4. 폴더를 도크의 아이콘으로 끌어다 놓습니다.

이 옵션의 좋은 점은 Archive Utility.app 환경 설정을 설정하여 원본이 완료된 후 휴지통으로 이동하도록 설정할 수 있다는 것입니다. 옵션으로 마우스 오른쪽 버튼을 클릭하려는 경우 Archive Utility.app를 서비스로 열도록 Automator 서비스를 설정하는 방법이 있습니까? 응용 프로그램 실행 작업을 사용하여 Archive Utility.app를 선택할 수 없기 때문에 제한이 발생했습니다.
— thepen

@thepen은 물론 Launch Application Action으로 Archive Utility를 선택할 수 있습니다. "기타…"를 선택하고 해당 위치 /System/Library/CoreServices/Applications/로 이동하면됩니다 (파일 선택 대화 상자가 열려있을 때 Cmd-Shift-G를 누르면 빠른 탐색을 위해이 경로를 붙여 넣기 가능)
— ababak

'아카이브 형식'과 'zip 아카이브'의 차이점은 무엇입니까?
— 1993 년

이 방법은 훨씬 쉬운 작업 흐름입니다. 나는 명령을 시도했다 : for item in *; zip "$ {item} .zip" "$ {item}"; 터미널에서 완료되었지만 제대로 작동하지 않았습니다. 이유는 알 수 없지만 시간을내어 알아 내고 싶지 않았습니다. 이것은 잘 작동했습니다.
— ArchonOSX
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.