shell之遍历文件夹并获取文件特定内容

#!/bin/bash
#指定解析器

#清空文件内容
echo '' > /etl/test/GetScriptInfo.txt

#设置变量
path=/etl/script/sql
StartCon="修改日期"
EndCon="Drop Table"

#获取日期和内容
GetCon(){
	#判断文件是否为空
	if [[ -s $1 ]]
	then
		While read line
		do
			#获取":"分隔符的前两内容
			Fir = `echo $line | awk -F: {print $1}`
			Sec =  `echo $line | awk -F: {print $2}`
			echo "$Fir=======$Sec" > /etl/test/GetScriptInfo.txt
		done < $1
	fi
}

#获取特定内容
GetInfo(){
	#获取包含所需内容的第一行
	StartNum=`cat -n $1 | grep $StartCon | sed -n '1p' | awk print{1}`
	EndNum=`cat -n $1 | grep $StartCon | sed -n '1p' | awk print{1}`
	#判断获取的值不为空
	if [[! -z $StartNUm ]] && [[! -z $EndNum]]
	then
		head -n $StarNUm $1 | tail -n +$EndNUm > /etl/test/GetScriptInfoTmp.txt
		#获取含有日期的内容
		cat /etl/test/GetScriptInfoTmp1.txt | egrep '[0-9]{4}/{0,1}-{0,1}[0-9]{1,2}/{0,1}-{0,1}[0-9]{1,2}' > /etl/test/GetScriptInfoTmp1.txt
		GetCon "/etl/test/GetScriptInfoTmp1.txt"
	fi
}

#遍历文件夹
readDir(){
	For file in `ls $1`
	do
		#判断是否为文件夹
		if [ -d $1"/"$file ]
		then
			readDir $1"/"$file
		else
			#判断文件名开头3位
			Str=${file:0:3}
			if [ ${Str} != "ddl" ]
			then
				GetInfo $1"/"$file
			fi
		fi
	done
}

readDir $path

你可能感兴趣的:(Linux,shell,linux,centos,ubuntu)