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

Zsh环境下如何按文件列表将指定文件复制到新目录

实现方案说明

不需要专门编写独立的.sh脚本,单条命令行即可一次性完成需求;如果后续需要重复执行同类操作,也可以写个轻量脚本提升复用性。

单条命令行实现(单次操作推荐)

  1. 先创建目标目录c,避免复制时报路径不存在的错误:
    mkdir -p c
  2. 执行复制命令,直接读取a.txt的文件列表,从b目录取对应有效文件复制到c:
    xargs -a a.txt -I {} cp "b/{}" c/

注意:绝对不要省略源文件路径的b/前缀,否则会错误读取a.txt同路径下的空同名文件,达不到复制有效JSON文件的目的。

轻量.sh脚本实现(重复调用推荐)

如果后续需要多次执行同类文件提取操作,可以写个带基础校验的脚本,容错性更高,脚本内容如下:

#!/bin/bash
# 校验依赖的文件和目录是否存在
if [ ! -f "a.txt" ]; then
  echo "报错:文件列表a.txt不存在"
  exit 1
fi
if [ ! -d "b" ]; then
  echo "报错:源文件目录b不存在"
  exit 1
fi

# 自动创建目标目录
mkdir -p c

# 逐行读取文件名复制,自动跳过空行
while IFS= read -r file_name; do
  [ -z "$file_name" ] && continue
  cp "b/$file_name" "c/"
done < a.txt

echo "操作完成:a.txt列出的所有有效文件已从b目录复制到c目录"

脚本写完后给执行权限即可运行:
chmod +x copy_files.sh && ./copy_files.sh

注意事项

  • 执行命令或脚本前,确认当前终端工作路径和a.txt、b目录处于同一级,否则请把路径替换为对应绝对路径
  • 上述命令默认兼容文件名带空格、末尾带多余空格的场景,和给出的示例文件命名规则完全匹配
  • 如果需要确认复制结果,可以执行ls c/对比文件列表和a.txt记录是否一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:57:15