linux shell实现文件批量创建和重命名

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


你可能感兴趣的:(shell,脚本,重命名,批量)