我想从工具中运行命令来合并我的文件
http://snpeff.sourceforge.net/SnpSift.html#Split
java -jar ~/snpEff_latest_core/snpEff/SnpSift.jar split -j file1.vcf file2.vcf file3.vcf ... > huge.out.vcf
我有400多个文件,因此逐个输入可能是错误的。
我试过这样的事情
find -name "*.vcf" | java -jar ~/snpEff_latest_core/snpEff/SnpSift.jar split -j > comb.vcf
这是我得到的错误
Error: Cannot 'join' less than two files.
SnpSift split -j
SnpSift version 4.1k (build 2015-09-07), by Pablo Cingolani
Usage: java -jar SnpSift.jar splitChr [-j] [-l <num>] file.vcf [file_2.vcf ... file_N.vcf]
Options:
-j : Join all files in command line (output = STDOUT).
-l <num> : Split by 'num' lines.
Default : Split by chromosome (one file per chromosome).
我用过这个&#34;找-name&#34;在其他工具上它似乎有效。
所以我的问题是,如何选择目录中的所有文件并运行命令。
答案 0 :(得分:0)
你可以尝试:
java -jar ~/snpEff_latest_core/snpEff/SnpSift.jar split -j file*.vcf
Bash会将文件* .vcf展开到当前目录匹配文件* .vcf中的所有文件。
请注意linux的命令长度最大(大小为3MB)。
如果你想使用find(给你更精细的粒子选择),你可以使用这样的东西:
find . -exec java -jar ~/snpEff_latest_core/snpEff/SnpSift.jar split -j {} \+
此处“{}”由find找到的文件替换,\ +表示:
-exec操作在所选文件上运行指定的命令,但命令行是通过在末尾附加每个选定的文件名来构建的