Linux使用sz深度遍历目录并且实现一级子目录断点续传下载相应格式的文件

Linux使用sz深度遍历目录并且实现一级子目录断点续传下载相应格式的文件

#!/bin/bash
# 通过记录下载位置,针对子目录实现断点续传
# rogeren

# 如果下载中断,再次运行脚本时从中断位置重新下载(sz 的参数调整覆盖下载或者重命名下载)
# 调整 zs 参数调整覆盖或者重命名,脚本中一共有两个地方使用了sz,遍历循环下载以及当前目录下载

export dir='/root/test'
export file='/root/script/strList.txt'


# 创建内循环函数
function innerLoop(){
for i in `ls -d1 $1/* | sed 's/\ /\?/g'`
	do
		if [ -d "$i" ]
			then
			echo "$i"' 是目录'
			innerLoop "$i"
		elif [[ "$i" =~ .*txt ]]
			then
			echo '开始下载 '"$i"
			sz "$i"
		fi
	done
}

# 创建不断读取文档函数
function readTxt(){
while true
do
	export str=`head -1 $file`
	# 如果引用的目录文件为空文件则跳出循环
	if [[ ! -s "$file" ]]
		then
			break
	# 当前目录中是否有文件符合下载要求
	elif [[ -f "$str" && "$str" =~ .*txt ]]
		then 
			echo '下载当前目录文件 '"$str"
			sz "$str"
			sed -i '1d' "$file"
			continue
	# 如果当前是目录文件
	elif [[ -d "$str" ]]
		then
			echo '进入目录 '"$str"
			# 深度遍历一级子目录中的文件夹
			innerLoop "$str"
			sed -i '1d' "$file"
			continue
	# 剩余情况:空行、不符合下载条件则删除当记录
	else
		sed -i '1d' "$file"
	fi
done
}

# 主函数
function main(){
if [ -s /root/script/strList.txt ]
	then readTxt
else
	ls -d1 "$dir"/* > "$file"
	readTxt
	fi
}

main
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值