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

如何设置文件路径仅获取后缀为.vcf.gz的pVCF文件?

解决方法

问题原因

你用*.vcf.gz匹配时,.vcf.gz.tbi文件会被误匹配——因为它的文件名里包含.vcf.gz字符串,通配符*会同时匹配到xxx.vcf.gz和xxx.vcf.gz.tbi(相当于*分别匹配了xxx和xxx.vcf.gz)。

具体解决方案

方案1:用bash扩展通配符精准过滤

先开启bash的扩展通配符功能,再用排除式匹配:

shopt -s extglob
# 先验证匹配结果
ls /mnt/projects/samples/vcf_format/*.vcf.gz!(*.tbi)

如果你的程序支持直接传入文件列表,直接这样调用:

your_program /mnt/projects/samples/vcf_format/*.vcf.gz!(*.tbi)

方案2:用find命令精准定位文件

find命令能更精准筛选文件,避免误匹配:

# 先查看筛选结果
find /mnt/projects/samples/vcf_format -maxdepth 1 -type f -name "*.vcf.gz" ! -name "*.vcf.gz.tbi"

把筛选结果传给程序,推荐用xargs(适合文件数量多的场景):

find /mnt/projects/samples/vcf_format -maxdepth 1 -type f -name "*.vcf.gz" ! -name "*.vcf.gz.tbi" | xargs your_program

或者直接用命令替换(bash环境下):

your_program $(find /mnt/projects/samples/vcf_format -maxdepth 1 -type f -name "*.vcf.gz" ! -name "*.vcf.gz.tbi")

方案3:代码层面过滤(以Python为例)

如果你的file_url是在代码里定义的,先通配匹配再过滤掉.tbi文件:

import glob
# 获取所有.vcf.gz后缀的文件
all_vcf_gz = glob.glob("/mnt/projects/samples/vcf_format/*.vcf.gz")
# 排除带.tbi的文件
filtered_files = [f for f in all_vcf_gz if not f.endswith(".vcf.gz.tbi")]
# 将filtered_files作为输入传给你的程序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:40:34