一个解压压缩文件的小脚本和一个为照片添加exif信息的小脚本

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
xzap
帖子: 256
注册时间: 2006-08-24 21:25

一个解压压缩文件的小脚本和一个为照片添加exif信息的小脚本

#1

帖子 xzap » 2009-09-11 21:51

好久没发新帖了,把自己常用的两个小脚本发下吧。

解压当前目录下的所有压缩文件,会将当前目录下的所有压缩文件解压到压缩文件名的目录下面,同时把所有压缩包放到rar 文件夹下面。没技术含量的,不过还算方便。

代码: 全选

#!/bin/bash
#解压缩rar文件
if [ ! -d rar ] 
then
mkdir -p rar
fi
for i in *
do
if [ -f "$i" ]
then
k=${i##*.}
j=${i%.*}
case $k in
	tar)
	mkdir -p "$j"
	mv "$i" "$j"/"$i"
	(cd "$j";tar xvf "$i";mv "$i" ../rar/"$i";cd ..)
;;
	gz)
		mkdir -p "$j"
	mv "$i" "$j"/"$i"
	(cd "$j";gzip -d "$i";mv "$i" ../rar/"$i";cd ..)
;;	
	tar\.gz|tgz|tar\.Z)
		mkdir -p "$j"
	mv "$i" "$j"/"$i"
	(cd "$j";tar zxvf "$i";mv "$i" ../rar/"$i";cd ..)
;;
	bz2|bz)
		mkdir -p "$j"
	mv "$i" "$j"/"$i"
	(cd "$j";bzip2 -d "$i";mv "$i" ../rar/"$i";cd ..)
;;
	tar\.bz2|tar\.bz)
		mkdir -p "$j"
	mv "$i" "$j"/"$i"
	(cd "$j";tar jxvf "$i";mv "$i" ../rar/"$i";cd ..)
;;
	Z)
		mkdir -p "$j"
	mv "$i" "$j"/"$i"
	(cd "$j";uncompress "$i";mv "$i" ../rar/"$i";cd ..)
;;
	
	zip)
		mkdir -p "$j"
	mv "$i" "$j"/"$i"
	(cd "$j";unzip "$i";mv "$i" ../rar/"$i";cd ..)
;;
	rar)
		mkdir -p "$j"
	mv "$i" "$j"/"$i"
	(cd "$j";rar x "$i";mv "$i" ../rar/"$i";cd ..)
;;
esac
fi
done
jy.tar.bz2
解压所有压缩文件
(441 Bytes) 已下载 33 次


一个为照片添加exif信息的小脚本。用的是exiv2来获取照片的exif信息,所以一定要装,还有就是字体的设置了。
比较适合的分辨率是2000x1500以上的,再小的图片可能效果不好,自己改下吧。
使用时后面带图片文件名就是修改单张图片。不带就是全部当前目录下的图片。

代码: 全选

#!/bin/bash
#字体设置
result=EXIF_`date +%Y%m%d%H%M%S`
font="/usr/share/fonts/wenquanyi/wqy-zenhei/wqy-zenhei.ttc" #exif信息字体
drawtxt(){
#-------------------------------------------------
oldifs=$IFS
IFS="
" 
exif_info=`exiv2 $1` 2>/dev/null
model=`echo "$exif_info"|grep "model"|awk -F":" '{print $2}'`
exposure=`echo "$exif_info"|grep "Exposure time"|awk -F":" '{print $2}'`
fnumber=`echo "$exif_info"|grep "Aperture    " |awk -F":" '{print $2}'`
date=`echo "$exif_info"|grep "timestamp"|awk -F" :" '{print $2}'`
size=`echo "$exif_info"|grep "Image size"|awk -F":" '{print $2}'`
px=`echo "$exif_info"|grep "Image size"|awk -F":" '{print $2}'|awk -F "x" '{print $1}'`
py=`echo "$exif_info"|grep "Image size"|awk -F":" '{print $2}'|awk -F "x" '{print $2}'`
focal=`echo "$exif_info"|grep "Focal length"|awk -F":" '{print $2}'`
#init-----------------------------------------------
[ -z "$model" ]&& exit
[ ! -d $result ]&& mkdir -p $result
echo "正在处理$1"
cp $1 $result/$1
cd $result
let "textsize=30+$py/200"
let "mask_y=35+$py/100"
convert -size "${px} x ${mask_y}" xc:"#ffffffc2" mask.png
text="  $model     $exposure  $fnumber  $focal     $size      $date "
echo $text
textl=`expr length "$text"`
let "textx=$px-$textl*$px/110" 
let "texty=$mask_y-15" #exif信息左下角坐标

convert -font $font -fill "#111111" -pointsize $textsize -draw "text $textx,$texty '$text'"  mask.png mask.png
composite -gravity South mask.png $1 $1
rm mask.png
cd ..
}
if [ $1 ]
then 
drawtxt $1
else
for i in *
do 
if [ -f "$i" ]
then 
drawtxt $i
fi
done
fi
IFS=$oldifs
exif.tar.bz2
为照片添加exif信息
(929 Bytes) 已下载 33 次
头像
xzap
帖子: 256
注册时间: 2006-08-24 21:25

Re: 一个解压压缩文件的小脚本和一个为照片添加exif信息的小脚本

#2

帖子 xzap » 2009-09-13 12:01

自己沙发自己坐,竟然一个回复都没有,上张添加exif的效果图
女儿上午去公园了。可惜脸上摔伤了,不好看
女儿上午去公园了。可惜脸上摔伤了,不好看
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 一个解压压缩文件的小脚本和一个为照片添加exif信息的小脚本

#3

帖子 eexpress » 2009-09-13 16:15

因为你的太复杂了。我这里都有,廖廖几句。
● 鸣学
回复