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

如何将220个目录下的*.fq.gz文件迁移至单一目录?

用Shell批量迁移*.fq.gz文件到单一目录

没问题,这个需求用Shell循环/命令处理简直是标配,我给你两个实用的方案,你可以根据自己的场景选择:

方案一:用find命令一键搞定(最简洁)

这种方法不需要手动遍历目录,find会帮你自动递归找到所有符合条件的文件,特别适合子目录结构复杂的情况:

# 第一步:先创建目标目录(如果还没存在的话,-p参数会自动创建多级目录)
mkdir -p /path/to/your/target_folder

# 第二步:查找所有*.fq.gz文件并移动到目标目录
find /path/to/your/source_parent_folder -type f -name "*.fq.gz" -exec mv {} /path/to/your/target_folder \;

命令解释:

  • /path/to/your/source_parent_folder:替换成包含那220个目录的父目录路径
  • -type f:确保我们只找文件,不会误操作目录
  • -name "*.fq.gz":精准匹配后缀为.fq.gz的文件
  • -exec mv {} ...:对每个找到的文件执行mv命令,{}代表当前找到的文件路径

方案二:用for循环手动遍历目录(更直观)

如果你明确知道所有220个目录都在同一个父目录下,用for循环遍历每个子目录再移动文件,逻辑更清晰:

# 先创建目标目录
mkdir -p /path/to/your/target_folder

# 遍历父目录下的所有子目录
for sub_dir in /path/to/your/source_parent_folder/*/; do
    # 移动当前子目录下的所有*.fq.gz文件到目标目录
    mv "$sub_dir"*.fq.gz /path/to/your/target_folder/
done

注意点:

  • 这里的*后面加了/,确保只遍历目录,不会匹配父目录下的文件
  • 用"$sub_dir"加引号是为了防止目录名包含空格、特殊字符时出错,这是Shell脚本的好习惯

额外提示:

  1. 先测试再执行:如果你担心误操作,可以先把mv换成ls,比如ls "$sub_dir"*.fq.gz,看看输出的文件是不是你要迁移的,确认无误后再改回mv
  2. 避免文件覆盖:如果不同目录下有重名的.fq.gz文件,默认mv会直接覆盖目标目录里的同名文件。想要避免的话,可以用mv -n(不覆盖已存在的文件)或者mv -b(给原文件加备份后缀,比如.bak),例如:
    mv -n "$sub_dir"*.fq.gz /path/to/your/target_folder/
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:38:02