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}" /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
标签:path2,shell,递归,10.38,path1,10.253,path,拷贝,10.12 From: https://www.cnblogs.com/xiaoxiaomuyuyu/p/18388192