首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在UNIX中保存多个文件的终端输出?

问如何在UNIX中保存多个文件的终端输出?
EN

Stack Overflow用户
提问于 2012-05-05 13:41:44
回答 2查看 1.2K关注 0票数 3

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

代码语言:javascript
复制
find . -type f -exec java JavaProgram {} \;

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

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

EN

回答 2

Stack Overflow用户

发布于 2012-05-05 13:54:40

怎么样

代码语言:javascript
复制
for i in $(find . -type f)
do
    java JavaProgram $i > ${i}.out
done

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

票数 4
EN

Stack Overflow用户

发布于 2012-05-05 13:53:39

只需执行一个子subshell即可执行重定向。例如:

代码语言:javascript
复制
find . -type f -exec sh -c "java JavaProgram {} > outputdir/{}" \;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10459223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档