最近总是需要打包不同目录下的代码,之前都是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