Помогите создать zip файлы по 50 файлов в каждом

У меня есть папка, содержащая 7000 изображений, которые нужно заархивировать в zip-файлы, содержащие только 50 файлов каждый.

Любой способ сделать это автоматически? Любой сценарий, рабочий процесс Automator, пакетная обработка — все, что будет полезно.

Я не очень опытен в использовании, поэтому, пожалуйста, будьте конкретны.

Я использую OS X Yosemite.

Ответы (1)

Вот быстрый и грязный скрипт BASH.

Предположения: все ваши фотографии находятся в папке, и в этой папке больше ничего нет.

#!/bin/bash
zip_count=0
files_zipped=0
folder_number=1
div=50
numfiles=(*)
numfiles=${#numfiles[@]}

mkdir zips

for file in *
do

  file_list="$file_list \"$file\""
  let "zip_count=zip_count+1"
  let "files_zipped=files_zipped+1"

  if [ "$files_zipped" -eq "$numfiles" ]; then
    echo "Final ZIP..."
    echo $file_list | xargs zip -9 zips/$folder_number.zip
  fi

  if [ "$zip_count" -eq "$div" ]; then
    echo "Next Zip..."
    echo $file_list | xargs zip zips/$folder_number.zip
    let "folder_number=folder_number+1"
    zip_count=0
    file_list=""
  fi

done

Вы можете скачать его здесь

После того, как вы загрузили его:

  1. Откройте Terminal.app и перейдите в каталог с вашими фотографиями, напримерcd /path/to/photos
  2. Запустите команду bash ~/Downloads/zip50.sh(при условии, что вы загрузили скрипт в папку загрузок).
  3. В папке с вашими фотографиями будет создана новая папка с названием «zips».
Я проверил ваш сценарий, и он работает, хотя вы можете запустить свой сценарий через http://www.shellcheck.net/ и посмотреть, стоит ли обращать внимание на какое-либо из предупреждений.