批量创建同名文件夹并移动对应fastq.gz文件的脚本问题求助
批量配对测序文件归类脚本方案
针对你遇到的配对文件无法正确移入对应文件夹的问题,这里提供两种可靠的Shell脚本方案,适配你的文件命名规则(基名.trimmed_1P.fastq.gz/基名.trimmed_2P.fastq.gz):
方案一:使用sed提取基名
#!/bin/bash # 遍历所有1P配对文件,避免重复处理 for file in *_1P.fastq.gz; do # 提取基名:移除".trimmed_1P.fastq.gz"后缀 base=$(echo "$file" | sed 's/\.trimmed_1P\.fastq\.gz$//') # 创建目标文件夹(已存在则跳过) mkdir -p "$base" # 移动对应的1P和2P文件到文件夹 mv "${base}.trimmed_1P.fastq.gz" "${base}.trimmed_2P.fastq.gz" "$base/" done
方案二:使用Shell参数扩展(更高效)
无需调用外部工具,纯Shell处理更快速:
#!/bin/bash for file in *_1P.fastq.gz; do # 第一步:移除末尾的"_1P.fastq.gz",得到"基名.trimmed" temp=${file%_1P.fastq.gz} # 第二步:移除".trimmed"后缀,得到最终基名 base=${temp%.trimmed} mkdir -p "$base" mv "${base}.trimmed_1P.fastq.gz" "${base}.trimmed_2P.fastq.gz" "$base/" done
操作提示
- 测试先行:先复制少量测试文件到空目录,运行脚本验证效果,确保无误后再处理400对文件
- 预览操作:如果不确定脚本执行结果,可以将
mv命令替换为echo mv,先查看将要执行的移动命令是否正确
内容的提问来源于stack exchange,提问作者Sergio Bolívar
相关产品推荐
相关产品推荐

