여러 폴더를 개별 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.