Initial commit

master
Sean Hickey 2014-07-05 23:49:04 -04:00
parent 844a4976ec
commit 287e6579b5
2 changed files with 108 additions and 0 deletions

View File

@ -2,3 +2,22 @@ ZipDirs
=======
A bash script to zip archive the directories within a directory.
This script is designed to zip archive all the directories within a
given directory (or the current one if unspecified) and output the
.zips to another directory (or the current one). Since this uses the
'zip' program, it will also update the zips if they already exist.
An example use case (what I needed it for in the first place) is to
zip up all the individual artists in a 'music' folder
For example:
$ ./zipDirs.sh ~/Music ~/Music-zipped
The output of that command will be all the dirs within ~/Music are
zipped and placed into ~/Music-zipped
(e.g. ~/Music/Something -> ~/Music-zipped/Something.zip)
Created by Sean Hickey (Wisellama), 2014
Released to the Public Domain under the terms of the Unlicense
http://unlicense.org/

89
zipDirs.sh Executable file
View File

@ -0,0 +1,89 @@
#!/bin/bash
# This script is designed to zip archive all the directories within a
# given directory (or the current one if unspecified) and output the
# .zips to another directory (or the current one). Since this uses
# the 'zip' program, it will also update the zips if they already
# exist.
#
# An example use case (what I needed it for in the first place) is to
# zip up all the individual artists in a 'music' folder
#
# For example:
# $ ./zipDirs.sh ~/Music ~/Music-zipped
#
# The output of that command will be all the dirs within ~/Music are
# zipped and placed into ~/Music-zipped
# (e.g. ~/Music/Something -> ~/Music-zipped/Something.zip)
#
# Created by Sean Hickey (Wisellama), 2014
# Released to the Public Domain under the terms of the Unlicense
# http://unlicense.org/
#
# Now lets begin!
startDir=`pwd`
# the directory that contains all the dirs to be zipped up
dirToZip=$1
if [ -z "$dirToZip" ]
then
dirToZip=.
fi
# the directory where the .zips will be placed
outputDir=$2
if [ -z "$outputDir" ]
then
outputDir=.
fi
# convert to global paths
if [ ${dirToZip:0:1} != "/" ]
then
dirToZip=$startDir/$dirToZip
fi
if [ ${outputDir:0:1} != "/" ]
then
outputDir=$startDir/$outputDir
fi
# Check if they are indeed directories and
# create the output dir if it doesn't exist.
# Side note: I didn't see a good way to negate the '-d' tag, so
# that's why the first if part is a nop (the ':').
# (it didn't like using '!' before it, as in [ ! -d "$dir" ])
if [ -d "$dirToZip" ]
then
:
else
echo "$dirToZip is not a directory, quitting."
exit 2
fi
if [ -d "$outputDir" ]
then
:
else
if [ -e "$outputDir" ]
then
echo "$outputDir is not a directory, quitting."
exit 2
else
mkdir "$outputDir"
fi
fi
# go to the directory to be zipped up
cd "$dirToZip"
if [ $? -ne 0 ]
then
exit $?
fi
# zip 'em up
# ignore any hidden folders
find . -maxdepth 1 -type d \( ! -iname ".*" \) -exec zip -r "$outputDir/{}.zip" {} \;
# May the Llamas spit upon ye.