Initial commit
parent
844a4976ec
commit
287e6579b5
19
README.md
19
README.md
|
@ -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/
|
||||
|
|
|
@ -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.
|
Loading…
Reference in New Issue