0
点赞
收藏
分享

微信扫一扫

[Codes] 利用Linux Shell并行复制文件


利用Linux Shell并行复制文件

本文记录一段Shell代码,用于将某些目录下所有的一级子文件进行遍历,得到其中想要保存的文件类型(在本文中是.ckpt结尾的文件),并将其备份到另一个文件夹中。 与其他方法不同,本文采用&!方式执行cp命令,在执行速度上更快。

#!/bin/bash

# 源目录
declare -a source_dirs=(
    "./partnet_chair"
    "./partnet_chair"
)

# 目标目录的基本路径
destination_base="/data_new/zry/checkpoints_cvpr24"

# 遍历源目录
for source in "${source_dirs[@]}"; do
    # 查找所有.ckpt文件并在后台复制它们
    find "$source" -type f -name "*.ckpt" | while read -r file; do
        # 计算目标文件路径,包括源目录名称
        relative_path="${file#$source}"
        dest_file="${destination_base}/${source##*/}${relative_path}"

        # 创建目标文件的目录(如果不存在)
        mkdir -p "$(dirname "$dest_file")" 

        # 在后台复制文件
        cp "$file" "$dest_file" &!
        
        # 打印一下
        echo "$dest_file"
    done
done

# 等待所有后台任务完成
wait


举报

相关推荐

0 条评论