我需要使用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;'使用'>>' –