Bash循环遍历不同目录中的文件并打印输出

时间:2016-04-05 04:22:03

标签: bash shell

我在目录*.vcf中有*.vcf.vcfidx*.vcf.idx/mypath/mydir/个文件。我想仅使用下面的命令(对于文件1)循环.vcf文件:

一个vcf文件的

命令:

vcf-subset -c sample.txt vcffile1.vcf | bgzip  -c > output_vcfile1.vcf_.vcf.gz

有人可以帮助循环遍历所有.vcf(不是vcf.vcfidxvcf.idx)文件,并使用上面显示的命令获取指定目录/get/inthis/dir/中每个文件的输出吗? / p>

1 个答案:

答案 0 :(得分:1)

只需使用glob模式*.vcf

for i in *.vcf; do echo "$i"; done

glob模式*.vcf将仅匹配以.vcf结尾的文件。

你的命令:

for i in *.vcf; do
    vcf-subset -c sample.txt "$i" | bgzip  -c > /get/inthis/dir/output_"$i"_.vcf.gz
done

如果您必须在特定目录中搜​​索.vcf个文件,例如/foo/bar/,执行:

for i in /foo/bar/*.vcf; do
    vcf-subset -c sample.txt "$i" | bgzip  -c > /get/inthis/dir/output_"${i##*/}"_.vcf.gz
done