Linux 如何选择目录中的所有文件并运行命令

Linux 如何选择目录中的所有文件并运行命令,linux,find,Linux,Find,我想从工具中运行一个命令来合并我的文件 我有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

我想从工具中运行一个命令来合并我的文件

我有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).
错误:不能“连接”少于两个文件。
SnpSift split-j
SnpSift版本4.1k(版本2015-09-07),由Pablo Cingolani编写
用法:java-jar SnpSift.jar splitChr[-j][-l]file.vcf[文件2.vcf…文件N.vcf]
选项:
-j:在命令行中连接所有文件(输出=STDOUT)。
-l:按“num”行拆分。
默认值:按染色体分割(每个染色体一个文件)。
我在其他工具上使用过这个“find-name”,它似乎很有效

所以我的问题是,如何选择目录中的所有文件并运行命令。

您可以尝试:

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操作在所选文件上运行指定的命令,但命令行是通过在末尾追加每个所选文件名来构建的

你可以试试:

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操作在所选文件上运行指定的命令,但命令行是通过在末尾追加每个所选文件名来构建的


不知道您的命令,但您可以尝试这样的通配符:
java-jar~/snpEff\u latest\u core/snpEff/SnpSift.jar split-j*.vcf>gig.out.vcf
不知道您的命令,但您可以尝试这样的通配符:
java-jar~/snpEff\u latest\u core/snpEff/SnpSift.jar split-j*.vcf>gig.out.vcf