shell 批量或者单独打包文件生成gz包
#!/bin/bash
Desktop=$(pwd) #返回到脚本目录
MoveFolder="C:/project_tar_all" #迁移项目文件夹
AloneFolder=$1 #单独文件
ProjectAddr="C:/project_branch" #项目存在地址
LogFile=$Desktop/log/MigrationProject.log
Files=$(ls $ProjectAddr)
ParamsLen=$#
if [ $ParamsLen != "0" ];then
echo $ParamsLen
Files=$*
fi
[ -f $LogFile ]&& rm -rf $LogFile
[ ! -d $MoveFolder ] && mkdir $MoveFolder || rm -rf $MoveFolder/*
echo $(date "+%Y-%-m-%d %H:%M:%S") >> $LogFile
for item in $Files;do
echo $item
currentFolder="${ProjectAddr}/${item}"
if [ -d $currentFolder ];then
echo -e "\n${currentFolder} 压缩中..."
echo -e "\n${currentFolder} 压缩中..." >> $LogFile
cd $currentFolder
[ -d $item ] && rm -rf ./$item
mkdir $item
childerFiles=$(ls -A $currentFolder)
echo $childerFiles
#[ -e ".babelrc" ] && cp -rf ./$i ./".babelrc"
for i in $childerFiles;do
childrenFile=$childerFiles/$i
if [ -e $i ] && [ $i != 'node_modules.tar' ]&& [ $i != 'node_modules' ]&&[ $i != 'dist' ]&& [ $i != $item ];then
cp -rf ./$i ./$item
echo $i
echo $i >> $LogFile
fi
done
tar -zcf $item.tar.gz ./$item
[ -d $item ] && rm -rf ./$item
mv -f $item.tar.gz $MoveFolder
echo "${currentFolder} 压缩并移动完成"
echo "${currentFolder} 压缩并移动完成" >> $LogFile
cd ..
else
echo -e "${item}文件夹找不到"
fi
done
echo $(date "+%Y-%-m-%d %H:%M:%S") >> $LogFile
cd $MoveFolder
tar -zcvf all.tar.gz ./*
shopt -s extglob #打开extglob模式,才能使用以下删除排除命令除了all.tar.gz其他文件都删除
rm -rf !(all.tar.gz)
cd $Desktop