Create multiple individual zip files

Have you ever needed to zip a number of files into separate zip archives? Perhaps you’ve got a number of files in one directory, and they need to be e-mailed to a number of different people. If you use OS X’s built-in Compress contextual menu item (or Create Archive in OS X 10.4), the end result will be one archive containing all the files—which is clearly not what you want.

You could compress each file one at a time, of course, but that’s tedious. Instead, put Automator to use with a simple one-command workflow. Open Automator, in Applications, and create a new custom (blank) worfklow. Select the Utilities entry in the left-most column, the drag the Run Shell Script action into the blank work area on the right.

Set the Pass Input pop-up to “as arguments,” and then replace the existing cat code with this text:

for f in "$@"
do
    zip -j "$f.zip" "$f"
done

That’s it; that’s the entire workflow. (Please note that this workflow will not work if you select a folder; it’s designed to zip files only.)

In a nutshell, the way this works is that it loops through each file that’s passed to it (that’s the first line), creating a variable (f) that holds the currently-active filename. It then runs the Unix zip command, with the -j option, creating a new zip file that’s simply the current filename with “.zip” appended at the end—the original file is not modified, so this script is perfectly safe to use. The -j option tells zip not to store path information in the zip file; if you leave that option out, when you expand the archive, the system will create a folder structure that exactly matches the full path to the original file.

Now that you’ve written your workflow, it’s time to make it easy to use. Select File -> Save As Plug-In. In the dialog that appears, give your workflow a name (Zip Separately), make sure the Plug-in For pop-up is set to Finder, then click Save. To use your plug-in, switch to the Finder and select a number of files (Command-click to select non-contiguous files). Then Control-click on one of the selected files, and choose More -> Automator -> Zip Separately (or whatever you named your workflow) from the pop-up menu.

When the workflow finishes running, you’ll find a zipped copy of each file you had selected, located in the same directory as the original file. This simple workflow makes short work of the task of creating separate zip archive from multiple individual files.

Subscribe to the Help Desk Newsletter

Comments