linux 拷贝文件带文件夹名,有6万个名单,怎么写脚本
DeepSeek-R1 回答完成
对于需要拷贝大量文件并保留文件夹结构的场景,可以使用rsync命令配合脚本处理。以下是解决方案:

copy_with_structure.sh
已完成
使用说明:
将6万个文件名保存到file_list.txt中,每行一个相对路径
修改SOURCE_DIR和TARGET_DIR变量为实际路径
脚本会保留原始目录结构拷贝文件
替代方案:如果文件都在同一目录下,可以使用更简单的xargs方案:

simple_copy.sh
已完成
注意事项:处理大量文件时建议先在测试环境验证,注意磁盘空间和权限问题。
#!/bin/bash
# 源目录和目标目录
SOURCE_DIR="/path/to/source"
TARGET_DIR="/path/to/destination"
# 检查文件列表是否存在
if [ ! -f "file_list.txt" ]; then
echo "错误:file_list.txt 文件不存在"
exit 1
fi
# 使用rsync按列表拷贝文件并保留目录结构
while IFS= read -r filepath; do
# 确保文件存在
if [ -e "$SOURCE_DIR/$filepath" ]; then
rsync -R "$SOURCE_DIR/./$filepath" "$TARGET_DIR"
else
echo "警告:文件不存在 - $filepath"
fi
done < "file_list.txt"
echo "拷贝完成"