ชุดบีบอัดหลายโฟลเดอร์ลงในไฟล์ซิปแต่ละไฟล์


12

ฉันมีหลายสิบโฟลเดอร์ที่ฉันต้องการบีบอัดเป็นไฟล์ zip แต่ละไฟล์

ถ้าผมเลือกทั้งหมดโฟลเดอร์เหล่านี้ใน Finder และทำ "บีบอัด [X] รายการ" ฉันได้รับหนึ่งไฟล์ซิปที่มีทั้งหมดของโฟลเดอร์ในขณะที่สิ่งที่ฉันต้องการเป็นหนึ่งในไฟล์ซิปต่อโฟลเดอร์

ฉันพยายามสร้างเวิร์กโฟลว์ด้วย Automator โดยใช้การกระทำ "สร้างที่เก็บถาวร" แต่มันทำงานในลักษณะเดียวกันคือ: การป้อนหลายไฟล์ / โฟลเดอร์ส่งออกไฟล์ซิปเดียว ไม่มีวิธีที่จะระบุว่าการดำเนินการทำงานกับแต่ละรายการ

โดยทั่วไปฉันกำลังมองหาวิธีที่จะหลีกเลี่ยงการเรียกใช้ "การบีบอัด" ที่น่าเบื่อใน Finder ในทุก ๆ โฟลเดอร์เดียวในแต่ละครั้ง มีวิธีใดที่จะทำให้สิ่งนี้เป็นแบบอัตโนมัติหรือไม่?


1
ฉันอัปเดตคำตอบของฉันเพื่อปรับปรุงรหัสที่ใช้ในการเพิ่มชื่อไฟล์เก็บถาวร zip ดังนั้นจึงเลียนแบบวิธีการค้นหาเมนูบริบทการบีบอัด [n] รายการคำสั่งเพิ่มชื่อไฟล์
user3439894

ขออภัยฉันปรับปรุงรหัสอีกครั้งเพื่อเอาที่ไม่จำเป็นpopdและการแก้ไขการพิมพ์ผิดร้ายแรงในซึ่งควรจะได้รับfor i in $bn*.zip; do for i in $bn *.zip; doสังเกตช่องว่างระหว่าง$bnและ*.zipมันหายไปและไม่ควรจะเป็น ดังนั้นโปรดอัปเดตในการดำเนินการของคุณมิฉะนั้นจะทำตามขั้นตอนFile Name 2.zipเมื่อbasenameมีพื้นที่ในนั้น
user3439894

คำตอบ:


14

นี่คือAutomator บริการ1ที่จะมีอยู่ในFinderเมื่อโฟลเดอร์ได้รับการคัดเลือกและการจำลองบริบทเมนู บีบอัด [N] รายการ คำสั่ง ยกเว้นจะสร้างไฟล์ซิปเก็บของแต่ละบุคคลเลือกสำหรับแต่ละโฟลเดอร์ในชื่อของที่เลือกโฟลเดอร์ ถ้าโฟลเดอร์ Name.zipไฟล์ที่มีอยู่แล้วแล้ว" 2"( พื้นที่ 2) ถูกผนวกเข้ากับชื่อไฟล์เช่นชื่อโฟลเดอร์ 2.zip สิ่งนี้ทำให้มั่นใจได้ว่าไฟล์เก็บถาวร zipที่มีอยู่ไม่ได้ถูกแตะต้องและชื่อไฟล์ zipจะถูกเพิ่มโดยอัตโนมัติตามความจำเป็น

1ในMacOS ซ้อมและต่อมาAutomator บริการที่เรียกว่าดำเนินการอย่างรวดเร็ว นอกจากนี้ยังมีความแตกต่างของศัพท์เล็กน้อยอื่น ๆ แต่ควรชัดเจนกว่าเมื่อเปรียบเทียบกับเวิร์กโฟลว์ pre-macOS Mojave Automator

วิธีสร้างบริการ: 1

  1. เปิดAutomatorและเลือกบริการ1หรือไฟล์ > ใหม่ > บริการหากเปิดอัตโนมัติแล้ว

  2. ตั้งค่าบริการได้รับการคัดเลือกเพื่อโฟลเดอร์และในการค้นหา

  3. เพิ่มRun Shell Script Action , ตั้งค่าShell:ถึง/ bin / bashและPass input:เพื่อเป็นอาร์กิวเมนต์และเพิ่มรหัสต่อไปนี้:

    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 > บริการ > บีบอัดโฟลเดอร์แยกจากแถบเมนู

ที่นั่นคุณมีวิธีบีบอัดหลายโฟลเดอร์แยกกันและพร้อมกันในคราวเดียวในไฟล์เก็บถาวรซิปแต่ละไฟล์ขณะที่จำลองวิธีที่ Finder สร้างไฟล์เก็บถาวรซิป ความหมายของไฟล์เก็บถาวร zip ประกอบด้วย forks ทรัพยากรที่สงวนไว้และ HFS meta-data ในไดเรกทอรีย่อย __MACOSX และฝังเฉพาะแหล่งที่มาของชื่อไดเรกทอรีหลักในไฟล์เก็บถาวรปลายทางไม่ใช่ชื่อพา ธ แบบเต็มเมื่อใช้zip(โดยไม่มี-j) เพื่อสร้างไฟล์เก็บถาวร

รูปภาพของการบีบอัดโฟลเดอร์แยกกัน

บีบอัดโฟลเดอร์แยก - บริการอัตโนมัติ


ฉันตรวจสอบทั้งโซลูชันของคุณและ @ ababak แล้ว พวกเขาให้ผลลัพธ์ที่เหมือนกันทุกประการและ ababak นั้นง่ายกว่าที่จะนำไปใช้ ฉันขึ้นคะแนนทั้งสองต่อไป
turzifer

15

มีทางเลือกอื่นในตัวหากคุณไม่ต้องการใช้ Automator และสามารถปรับเปลี่ยนการตั้งค่า Archive Utility ได้

  1. เปิด Archive Utility.app ที่อยู่ใน / System / Library / CoreServices / Applications /
  2. ไปที่ไฟล์> การตั้งค่า
  3. เปลี่ยนการตั้งค่า "ใช้รูปแบบเก็บถาวร" เป็น "เก็บถาวร Zip"
  4. ลากและวางโฟลเดอร์ลงในไอคอนใน Dock

สิ่งที่ดีเกี่ยวกับตัวเลือกนี้คือคุณสามารถตั้งค่าการกำหนดค่าตามความชอบของ Archive Utility.app เพื่อย้ายต้นฉบับไปที่ถังขยะหลังจากเสร็จสิ้น แต่ไม่ จำกัด เฉพาะโฟลเดอร์ มีวิธีการตั้งค่าบริการ Automator เพื่อเปิดด้วย Archive Utility.app เป็นบริการถ้าคุณต้องการคลิกขวาเป็นตัวเลือกหรือไม่? ฉันพบข้อ จำกัด เนื่องจากไม่สามารถเลือก Archive Utility.app ได้โดยใช้แอปพลิเคชันเรียกใช้งาน
thepen

@thepen แน่นอนคุณสามารถเลือก Archive Utility เป็น Launch Application Action คุณเพียงแค่ต้องเลือก "อื่น ๆ ... " และนำทางไปยังตำแหน่งของมันซึ่งคือ/System/Library/CoreServices/Applications/(คุณสามารถกด Cmd-Shift-G เมื่อกล่องโต้ตอบเลือกไฟล์เปิดเพื่อวางเส้นทางนี้สำหรับการนำทางที่รวดเร็ว)
ababak

ความแตกต่างระหว่าง 'รูปแบบการเก็บถาวร' และ 'การเก็บถาวรแบบ zip' คืออะไร
user1993

วิธีนี้เป็นกระบวนการทำงานที่ง่ายกว่ามาก ฉันลองใช้คำสั่ง: สำหรับรายการใน *; ทำ zip "$ {item} .zip" "$ {item}"; เสร็จแล้วในเทอร์มินัล แต่มันใช้งานไม่ได้ ไม่ทราบสาเหตุ แต่ฉันไม่ต้องการใช้เวลาในการคิด มันใช้งานได้ดี
ArchonOSX
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.