You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何根据txt文件内名称批量匹配并拷贝含子目录的目录

报错根因

你猜测的排序问题不存在,报错是原有命令的多处语法、逻辑错误导致:

  • 变量未正确展开:用单引号包裹$line时,Shell不会将其解析为变量,实际传递的是固定字符串$line而非读取到的目录名
  • 逻辑冗余:不需要调用grep,通过read已经拿到了目标目录名,直接使用即可
  • 复制参数缺失:cp默认不支持复制目录,缺少-r参数无法递归拷贝目录下的子目录和所有内容
  • 参数不匹配:xargs -r0要求输入以null字符分隔,你当前的输入是换行分隔的,导致传给cp的路径格式完全错误,最终触发找不到文件的报错
可行解决命令

首先将下方命令中的/path/to/your/desired_destination替换为你实际要拷贝到的目标路径即可:

while IFS= read -r dir_name; do
  # 仅当目录存在时才执行复制,避免无意义报错
  [ -d "$dir_name" ] && cp -r "$dir_name" /path/to/your/desired_destination/
done < names.txt

如果需要更简洁的写法,也可以直接用xargs实现:

xargs -I {} cp -r {} /path/to/your/desired_destination/ < names.txt

内容的提问来源于stack exchange,提问作者Diego Munoz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 22:42:01