shell脚本实现递归拷贝文件
shell脚本
#!/bin/bash list=(10.12.63.232 10.12.7.95 10.12.8.247 10.12.9.146 10.253.1.198 10.38.0.125 10.38.0.205 10.38.0.44 10.38.0.97 10.111.8.234 10.12.20.13 10.12.2.150 10.12.3.143 10.12.50.175 10.12.65.7 10.12.8.126 10.12.8.90 10.12.9.186 10.253.1.211 10.38.0.138 10.38.0.213 10.38.0.48 169.254.2.154 10.111.8.71 10.12.20.14 10.12.2.191 10.12.3.144 10.12.60.156 10.12.7.154 10.12.8.141 10.12.9.10 10.12.9.224 10.253.33.3 10.38.0.158 10.38.0.215 10.38.0.49 10.11.255.203 10.12.20.15 10.12.2.96 10.12.44.70 10.12.60.157 10.12.7.155 10.12.8.142 10.12.9.129 10.12.9.9 10.38.0.176 10.38.0.219 10.38.0.50 10.11.255.204 10.12.2.111 10.12.3.136 10.12.44.74 10.12.60.158 10.12.7.156 10.12.8.188 10.12.9.133 10.253.1.162 10.32.26.163 10.38.0.18 10.38.0.249 10.38.0.73) path1=/anyrobot/archive_data/nas/cache/2024 path2=/anyrobot/archive_data/cache/2024 # 定义递归函数 fun() { local current_dir="$1" # 切换到当前目录 cd "$current_dir" || exit # 遍历当前目录下的所有文件和目录 for j in *;do if [ -d $j ];then # 如果是目录,递归调用 fun $j else # 如果是文件,将path1中的文件拷贝到path2中 path_1=$PWD # 从 path_1 中去除 path1 部分,得到剩余的路径 remaining_path="${path_1#${path1}}" # 拼接 path2 和剩余路径 path_2="${path2}${remaining_path}"
#如果path_2不存在,则创建目录
if [ ! -d $path_2 ];then
#echo "$path_2不存在"
/bin/mkdir -p $path_2
fi
#拷贝文件
/bin/cp -rf $path_1/* $path_2 break fi done # 返回上一级目录 cd .. } for i in ${list[@]}; do if [ -d $path1/$i ];then cd $path1/$i #调用递归函数,从path1/$i路径开始,由于之前手动复制了一些,所以使用列表的方式来处理剩下的,否则可以直接从path1开始执行递归函数 fun "." fi done
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2023-08-30 go 工厂模式