3

我有一个 java 类文件,我需要在目录中的每个文件上运行它。我目前正在使用以下命令在目录中的每个文件上运行程序

find . -type f -exec java JavaProgram {} \;

但是,我需要将每次调用的结果输出到单独的文件,而不是在终端中显示结果。有没有我可以使用的命令可以递归地调用整个目录上的 java 程序并将每次调用的终端输出保存到单独的文件中?

有点像运行java JavaProgram inputfile > outputdir/outputfile但递归地遍历目录中具有相同名称的每个'inputfile'文件'outputfile'

4

2 回答 2

4

怎么样

for i in $(find . -type f)
do
    java JavaProgram $i > ${i}.out
done

这将对每个文件运行程序并将输出写入每个文件filename.out的同一目录中。这种方法比单行 subshel​​l 方法稍微灵活一些,因为您可以进行任意转换以生成输出文件名,例如basename用于删除后缀。

于 2012-05-05T05:54:40.237 回答
2

只需执行一个子shell 来进行重定向。例如:

find . -type f -exec sh -c "java JavaProgram {} > outputdir/{}" \;
于 2012-05-05T05:53:39.057 回答