#!/bin/sh
# Purpose: To convert jpg images,
# convert big pictures from you digital camera to small version
# Howto use: sizeconv.sh <pictures' directory path>
# it's just a sample: ls -1Q *.[Jj][Pp][Gg]
# assumption: photos' extension *.jpg or *.JPG
# convert_param veriable:
# -option parameter_value
# example:
# -scale 50%
# -resize 150
# -sample 200%
#specify conversion option and value:
convert_param="-resize 600"
# Check, whether Imagemagick is being installed
if [ ! -x /usr/bin/convert ]
then echo "Imagemagick is not installed"
if [ -x /usr/bin/apt-get ]
then echo; echo "Let's try to install it..."
sudo apt-get -y install imagemagick
if [ $? != 0 ]
then echo "Installation Error... please verify it and try to install imagemagick manualy"; sleep 3; exit
fi
else echo "Package imagemagick must be installed on your system"; sleep 3; exit
fi
fi
# statemant validation
if [ -z $1 ]
then
echo "Target directory not specified"
echo "Usage: sizeconv.sh <target directory>"
sleep 1
exit 1
fi
echo "Eliminate all spaces from the directories and files names"
echo "Processing directories names..."
find $1 -type d -exec rename 's/ /_/g' {} ; > /dev/null 2>&1
echo "Done..."
echo "Processing filenames..."
find $1 -type f -exec rename 's/ /_/g' {} ;
echo "Done..."
sleep 2
#total_files=`find $1 -name '*.[Jj][Pp][Gg]' -print0 | xargs -0 ls -1 |wc -l`
total_files=`find $1 -type f -name '*.[Jj][Pp][Gg]' | grep -v converted_files |wc -l`
dir_list=`find $1 -type d |egrep -v '^.{1,2} |grep -v converted_files`
clear
for z in $dir_list; do
cd $z
dir1=`pwd`
#Check whether any jpg files exist in the directory
ls -1 *.[Jj][Pp][Gg] > /dev/null 2>&1
if [ $? != 0 ]
then cd - > /dev/null
continue
fi
ls -1 converted_files/*.[Jj][Pp][Gg] > /dev/null 2>&1
if [ $? = 0 ]
then cd - > /dev/null
continue
fi
if [ ! -d converted_files ]
then mkdir converted_files
fi
#let's roll
nr_of_files=`ls -1 *.[Jj][Pp][Gg] | wc -l` > /dev/null 2>&1
g=0
for i in *.[Jj][Pp][Gg]; do
echo "<<<< START >>>>"
h="$(($h + 1))"
g="$(($g + 1))"
echo "Converting: [$h from $total_files] in total"
echo
echo "Converting $i: [$g from $nr_of_files] within: $dir1"
convert $i $convert_param converted_files/$i
clear
done
cd - > /dev/null
done
echo ">>>> Work Complete for $1 <<<<"
exit
#End-Script#
By continuing to use the site, you agree to the use of cookies. more information
The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.