#! /bin/bash
#功能:本段脚本实现了两类功能(1)文件的批量创建和(2)文件的批量改名操作,可用于相片的整理过程
# 并且具有良好的扩展性,可以添加自己的选项实现所需功能。
#试用平台:ubuntu 12.04,理论上现在版本的linux都可用
#llt 2014.03.17
#功能:指定文件夹下文件批量创建
#用法:./ChangeName.sh -t 文件夹路径 创建文件个数 创建文件前缀
function changename()
{
if ! test -d "$1"
then
echo "You are wrong! $1 is not a directory!!! OR $1 does not exist!!!"
return 1
else
echo "$1 is a directory!"
cd $1
fi
if ! test $# -eq 2
then
echo "The paraments to create files must be 2!!!"
return 1
else
echo "The number of paraments is right!"
fi
declare -i filenum="1"
#echo "!!!!!!!"
for filename in ./*
do
echo "$filename"
if test -f $filename
then
mv $filename "$2$filenum"
((filenum=filenum+1))
fi
done
return 0
}
#功能:指定文件夹下所有普通文件文件全部重命名
#用法:./ChangeName.sh -c 文件夹路径 重命名前缀
function touchfile()
{
if ! test -d "$1"
then
echo "You are wrong! $1 is not a directory!!! OR $1 does not exist!!!"
return 1
else
echo "$1 is a directory!"
cd $1
fi
if ! test $# -eq 3
then
echo "The paraments to create files must be 3!!!"
return 1
else
echo "The number of paraments is right!"
fi
case "$2" in
[1-9][0-9]*)
echo "$1 is a number !"
;;
*)
;;
esac
#echo "!!!!!!!"
declare -i filesum="$2"
while(test $filesum -gt 0 )
do
touch "$3""$filesum"
echo "$3$filesum is establish !!!"
((filesum=filesum-1))
done
return 0
}
#功能:选项处理
function showopt()
{
#测试
#echo "OPTIND is $OPTIND at the start !!!"
declare -i sum
while getopts ":cth" optname
do
case "$optname" in
"c")
changename "${@:$OPTIND}"
if test $? -eq 0
then
echo "The operation succeeds!"
else
echo "The operation fails!!!"
fi
;;
"t")
touchfile "${@:$OPTIND}"
if test $? -eq 0
then
echo "The operation succeeds!"
else
echo "The operation fails!!!"
fi
;;
"h")
echo "Usage: args [-t] [-c] "
echo "-c means changing the name of files in the specified directory"
echo "-t means touching files as many as specified in the specified directory"
echo "-h means this help"
;;
"?")
echo "No option like this???"
echo "You can use args -h to query the options that value! "
;;
":")
echo "$optname has not value!!!"
;;
"*")
echo "Wrong action!!!"
;;
esac
done
return $OPTIND
}
#脚本运行开始位置
showopt "$@"
#学到知识:1、getopts命令的使用;2、shell中整形变量的声明与算术运算;3、shell中while,for,if,case等条件控制指令的使用;4、shell中函数的使用及参数传递;5、shell中特殊变量$@,$?,$#,$[1-9]使用