#! /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]使用