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

如何编写bash脚本将子目录文件复制到指定目录并以路径信息重命名

Bash 路径拼接复制脚本实现方案

以下脚本可直接适配需求,支持所有合法字符的文件名、目录名:

#!/bin/bash

# 请修改为实际的源主目录和目标目录路径
SOURCE_DIR="$HOME/MainDir"
TARGET_DIR="$HOME/NewDir"

# 自动去除源目录末尾的斜杠,避免路径匹配异常
SOURCE_DIR=${SOURCE_DIR%/}
# 目标目录不存在则自动创建
mkdir -p "$TARGET_DIR"

# 遍历源目录下最多两级子目录中的所有文件,适配所有特殊字符场景
find "$SOURCE_DIR" -maxdepth 3 -type f -print0 | while IFS= read -r -d '' file; do
    # 去掉源目录前缀,将路径分隔符/替换为_得到新文件名
    new_filename="${file#$SOURCE_DIR/}"
    new_filename="${new_filename//\//_}"
    # 执行复制操作
    cp "$file" "$TARGET_DIR/$new_filename"
done
脚本特性说明
  • 层级控制:find命令添加-maxdepth 3参数,刚好匹配最多2级子目录的结构,不会读取更深层级的文件
  • 特殊字符兼容:采用空字符作为文件名分隔符,支持目录名/文件名包含空格、连续点、换行符等任意Linux合法字符
  • 命名规则匹配:自动剥离源目录前缀后替换路径分隔符,完全符合一级子目录_二级子目录_文件名的命名要求
  • 容错设计:自动创建目标目录,不需要提前手动新建
使用方法
  1. 将脚本内容保存为copy_rename_files.sh
  2. 修改脚本开头的SOURCE_DIR和TARGET_DIR为实际路径
  3. 给脚本添加执行权限:chmod +x copy_rename_files.sh
  4. 运行脚本:./copy_rename_files.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:24:03