【发布时间】:2015-11-05 03:41:39
【问题描述】:
我需要使用 linux bash 命令处理我的数据(大约 400 多个文件)。我正在尝试找到一种方法来对我的所有文件迭代相同的命令。
这是我的 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 程序并在内部迭代这些行?这似乎是你的意图。
-
我看不到问题,但是 a) 不需要
echob) 你缺少路径中的~/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; done注意: 附加到filtered.vcf;使用>>