我有一个java类文件,我需要在目录中的每个文件上运行它。我目前正在使用以下命令对目录中的每个文件运行该程序
find . -type f -exec java JavaProgram {} \;但是,我需要它将每次调用的结果输出到一个单独的文件中,而不是在终端中显示结果。有没有一个命令可以用来递归地调用整个目录上的java程序,并将每次调用的终端输出保存到一个单独的文件中?
有点像运行java JavaProgram inputfile > outputdir/outputfile,但是递归地遍历'inputfile'和'outputfile'同名的目录中的每个文件。
发布于 2012-05-05 13:54:40
怎么样
for i in $(find . -type f)
do
java JavaProgram $i > ${i}.out
done这将针对每个文件运行该程序,并将输出写入每个文件的相同目录中的filename.out。这种方法比单行子subshell方法稍微灵活一些,因为您可以执行任意转换来生成输出文件名,比如使用basename删除后缀。
发布于 2012-05-05 13:53:39
只需执行一个子subshell即可执行重定向。例如:
find . -type f -exec sh -c "java JavaProgram {} > outputdir/{}" \;https://stackoverflow.com/questions/10459223
复制相似问题