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

Unix Shell脚本批量拷贝各文件夹下a.txt按目录名重命名到新目录求助

实现方案

前置操作

首先创建用来统一存放所有文件的目标目录,避免后续拷贝报错:
mkdir -p ./target_files
-p参数的作用是如果目录已存在也不会抛出错误、中断执行。

场景1:所有待处理文件夹都在当前目录下,无嵌套

直接用Shell循环处理即可:

for dir in */; do
    # 移除目录名末尾的斜杠,得到纯净的文件夹名称
    folder_name=${dir%/}
    # 拷贝a.txt到目标目录,用文件夹名作为新的文件名
    cp "${dir}a.txt" "./target_files/${folder_name}.txt"
done

说明

  • */只会匹配当前路径下的子目录,自动过滤普通文件,不会误处理其他文件
  • 文件名两边加双引号是兼容文件夹名带空格、特殊字符的情况
  • 执行前可以把cp替换成echo cp,先打印一遍要执行的拷贝命令,确认路径和命名符合预期再正式执行

场景2:待处理文件夹存在多层嵌套,需要全局搜索所有a.txt

用find命令遍历所有层级:

find . -type f -name "a.txt" -exec sh -c '
    for file_path in "$@"; do
        # 提取a.txt所在文件夹的完整路径
        parent_dir=$(dirname "$file_path")
        # 提取文件夹的最后一级名称
        folder_name=$(basename "$parent_dir")
        # 拷贝到目标目录
        cp "$file_path" "./target_files/${folder_name}.txt"
    done
' sh {} +

注意事项

  • 如果存在多个同名文件夹,后拷贝的文件会覆盖目标目录下的同名文件,有需要可以自行在文件名上加时间戳、序号等标识避免冲突
  • 如果需要保留原文件名标识,可以把目标文件名改成${folder_name}_a.txt,按需调整即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:27:03