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

如何为多子目录中的文件添加子目录名前缀重命名

批量给子目录文件添加目录名前缀的解决方案

方法一:用find命令一键处理

直接在父目录下执行这条命令,就能给所有子目录里的.fq.gz文件加上对应子目录名的前缀:

find . -type f -name "*.fq.gz" -exec sh -c 'mv "$0" "$(dirname "$0")/$(basename "$(dirname "$0")")_$(basename "$0")"' {} \;

命令拆解:

  • find . -type f -name "*.fq.gz":扫描当前父目录下所有后缀为.fq.gz的普通文件
  • -exec sh -c '...' {} \;:对每个找到的文件执行后面的重命名逻辑
  • 重命名部分:提取文件所在的子目录名,拼上_和原文件名,替换原文件路径

方法二:用bash脚本分步处理(更直观)

如果想更清楚看到每一步操作,可以写个简单的bash脚本,放在父目录下执行:

#!/bin/bash
# 遍历父目录下的所有子目录
for subdir in */; do
    # 移除子目录名末尾的斜杠
    subdir_name=${subdir%/}
    # 遍历当前子目录下的所有.fq.gz文件
    for file in "$subdir"*.fq.gz; do
        # 跳过不存在的文件(比如子目录为空的情况)
        [ -f "$file" ] || continue
        # 提取纯文件名(不带路径)
        filename=$(basename "$file")
        # 执行重命名:子目录名_原文件名
        mv "$file" "$subdir${subdir_name}_$filename"
    done
done

执行前记得给脚本加权限:chmod +x rename_files.sh,然后运行./rename_files.sh

注意事项

  • 操作前建议先备份文件,避免意外情况
  • 若要处理其他类型文件,把命令里的*.fq.gz改成对应的后缀即可
  • 两种方法都支持带特殊字符的目录名/文件名,因为全程用引号包裹了变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:15:27