我需要使用linux bash命令处理我的数据(大约400多个文件)。我试图找到一种方法来迭代相同的命令到我的所有文件。遍历bash命令
这是我的bash命令
cat file1.vcf | java -jar ~/snpEff_latest_core/snpEff/SnpSift.jar/ filter " (QUAL >= 30)" > file1_filtered.vcf
我试图这样做,但没有成功
for f in *.vcf; do echo cat *.vcf | java -jar snpEff_latest_core/snpEff/SnpSift.jar/ filter " (QUAL >= 30)" > filtered.vcf; done
这是基于我得到
Error: Unable to access jarfile snpEff_latest_core/snpEff/SnpSift.jar/
Error: Unable to access jarfile snpEff_latest_core/snpEff/SnpSift.jar/
Error: Unable to access jarfile snpEff_latest_core/snpEff/SnpSift.jar/
看来你最好把文件名/路径作为命令行参数发送到你的Java程序并在内部迭代线路?这似乎是你的意图。 – ray
我看不到问题,但a)不需要'echo'b)你错过了路径中的'〜/'c)这将覆盖'filtered.vcf',更好地使用'> $ {f%.vcf} _filtered.vcf'在结尾 –
尝试:'for f in * .vcf; do java -jar snpEff_latest_core/snpEff/SnpSift.jar/filter“(QUAL> = 30)”< "$f" > filtered.vcf;完成**注:**附加到'filtered.vcf;'使用'>>' –