shell脚本打包指定目录下的特定后缀的文件

最近总是需要打包不同目录下的代码,之前都是find 之后 使用tar命令来打包,总是输入长串命令,觉得麻烦就想着写个脚本吧。

结果发现 find 命令在脚本中不能执行,后来询问朋友之后,原来是 *.h   *号 没有被发挥通配符的作用 ! 必须把文件后缀 以变量的形式传入才行,下边是自己的代码!

#!/bin/bash
CUR_DIR=`pwd`
FILE_TYPE_H="h"
FILE_TYPE_C="c"
FILE_TYPE_CPP="cpp"
FILE_TYPE_CC="cc"
TMP_FILE="tmp.txt"
TARGET_FILE=$CUR_DIR"/Code.tar.gz"
if [ -f "$TARGET_FILE" ];then
  `rm -rf $TARGET_FILE`
fi
echo "You will compress the codes in the { $CUR_DIR } direcotry "
echo "Are you sure { y or n }"
read AnsOne
if [ "$AnsOne" = "y" ] || [ "$AnsOne" = "yes" ]; then
   echo "compress start >>>>  and the dir is $CUR_DIR "
   exec 3>$TMP_FILE
   TMP_CMD="find $CUR_DIR -name *.$FILE_TYPE_H -o -name *.$FILE_TYPE_C -o -name *.$FILE_TYPE_CPP -o -name *.$FILE_TYPE_CC"
   echo "excute shell cmd >>>>> $TMP_CMD"
   RESULT=$(${TMP_CMD})
   echo "$RESULT" >&3
   exec 3>&-
   echo "start compress code............."
   TAR_CMD="tar -T $TMP_FILE -zcvf $TARGET_FILE"
   ${TAR_CMD}
   echo "Compress code end .............leave file $TARGET_FILE"
   `rm -rf $TMP_FILE`
elif [ "$AnsOne" = "n" ] || [ "$AnsOne" = "no" ]; then
   echo "You choose n and please input the new path :"
   exec 4>$TMP_FILE
   read NEW_PATH
   TMP_CMD="find $NEW_PATH -name *.$FILE_TYPE_H -o -name *.$FILE_TYPE_C -o -name *.$FILE_TYPE_CPP -o -name *.$FILE_TYPE_CC"
   echo "excute shell cmd >>>>> $TMP_CMD"
   RESULT=$(${TMP_CMD})
   echo "$RESULT" >&4
   exec 4>&-
   echo "start compress code............."
   TAR_CMD="tar -T $TMP_FILE -zcvf $TARGET_FILE"
   ${TAR_CMD}
   echo "Compress code end .............leave file $TARGET_FILE"
   `rm -rf $TMP_FILE`
else
   echo "cant not figure your input "
fi

猜你喜欢

转载自blog.csdn.net/veghlreywg/article/details/82716187