shell 批量或者单独打包

168 阅读1分钟

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