--------------------------------------------------------------------
[010目录结构]
--------------------------------------------------------------------
.
|-- book-2008-08-25
|-- install.sh
|-- png-jpg.sh
`-- readme
0 directories, 4 files
--------------------------------------------------------------------
[./readme]
--------------------------------------------------------------------
程序名称:
png-jpg批量格式转换
程序功能:
批量转换png格式文件为jpg格式文件
安装方法:
./install.sh
使用说明:
1.png-jpg.sh
运行:
png-jpg.sh
注意:
1.
运行程序期间会强行删除当前目子录或文件convert-`date '+%F'`
重名的jpg文件和转换后的jpg文件将放在子目录convert-`date '+%F'`里
当前目录的png文件将自动删除
2.
个人应用,功能有限
总结:
1.
只考虑字符串匹配比较的情况:
echo "当前目录共有`ls -p | grep '[^/]$' | wc -l`个文件"
echo "jpg文件个数:`ls -p | grep '[^/]$' | grep '.jpg$' | wc -l`"
echo "png文件个数:`ls -p | grep '[^/]$' | grep '.png$' | wc -l`"
echo "其它文件如下:"
echo "`ls -p | grep '[^/]$' | grep -v '.jpg$' | grep -v '.png$'`"
后来改进成用file命令验证是否为png格式文件
--------------------------------------------------------------------
[./install.sh]
--------------------------------------------------------------------
#!/bin/sh
info="安装文件缺失,安装过程中断!"
name="png-jpg批量格式转换"
installdir="/usr/local/bin/"
if [ ! -e png-jpg.sh ] ; then
echo "$info"
exit 1
fi
chmod +x png-jpg.sh
cp png-jpg.sh "$installdir"
echo "$name安装成功!"
exit 0
--------------------------------------------------------------------
[./png-jpg.sh]
--------------------------------------------------------------------
#!/bin/sh
tofile=
i=0
deco="--------------------------------------------"
bakfile="convert-`date '+%F'`"
flag=0
filetype=
filenum=0
baknum=0
temp1=0
temp2=0
type_is()
{
# $1= file_type_message $2= file_name
if [ $# -ne 2 ] ; then
echo "error occured in type_is function!"
echo "usage: type_is file_type_message file_name"
exit 1
fi
filetype=`file "$2"`
filetype="${filetype#* }"
echo "$filetype" | grep -q "$1"
return $?
}
type_num()
{
# $1= file_type_message
if [ $# -ne 1 ] ; then
echo "error occured in type_num function!"
echo "usage: type_num file_type_message"
exit 1
fi
filenum=0
for name in *
do
if [ -f "$name" ] ; then
type_is "$1" "$name"
if [ $? -eq 0 ] ; then
filenum=$(($filenum+1))
fi
fi
done
return $filenum
}
statistics()
{
echo
echo "$deco"
if [ $(($flag%2)) -eq 0 ] ; then
echo "[转换前的情况]"
else
echo "[转换后的情况]"
fi
flag=$(($flag+1))
echo "当前目录共有`ls -p | grep '[^/]$' | wc -l`个文件"
type_num "JPEG image data"
echo "jpg文件个数:$?"
type_num "PNG image data"
temp1=$?
echo "png文件个数:$temp1"
if [ $temp1 -eq 0 ] && [ $flag -eq 1 ] ; then
echo "当前目录下png格式文件数目为0,无需转换"
echo "程序退出"
exit 1
fi
echo "其它文件如下:"
for name in *
do
if [ -f "$name" ] ; then
type_is "JPEG image data" "$name"
temp1=$?
type_is "PNG image data" "$name"
temp2=$?
if [ $temp1 -ne 0 ] && [ $temp2 -ne 0 ] ; then
echo "$name"
fi
fi
done
echo "$deco"
echo
}
rm -f *~
if [ -e "$bakfile" ] ; then
echo "删除当前目录的文件或文件夹$bakfile"
rm -R "$bakfile"
fi
statistics
echo "转换中..."
for name in *
do
if [ -f "$name" ] ; then
type_is "PNG image data" "$name"
if [ $? -eq 0 ] ; then
tofile=${name%%.*}".jpg"
if [ -e "$tofile" ] ; then
if [ ! -e "$bakfile" ] ; then
mkdir "$bakfile"
echo "在当前目录创建文件夹$bakfile"
fi
echo "目标文件$tofile已存在,转换后的$tofile和原需转换的文件将放在当前子目录$bakfile,原需转换的文件将添加old后缀"
convert "$name" "$bakfile"/"$tofile"
if [ $? -eq 0 ] ; then
i=$(($i+1))
baknum=$(($baknum+1))
fi
mv "$tofile" "$bakfile"/"$tofile".old
else
convert "$name" "$tofile"
if [ $? -eq 0 ] ; then
i=$(($i+1))
fi
rm -f "$name"
fi
fi
fi
done
statistics
echo "已转换png格式到jpg格式的文件个数:$i"
echo "$bakfile里已转换的同名jpg文件数目为$baknum"
echo "转换完毕!"
--------------------next---------------------