小编jse*_*ras的帖子

使用find -exec重定向stdout并且不创建新shell

我有一个只写数据的脚本stdout.我需要为多个文件运行它并为每个输入文件生成不同的输出文件,我想知道如何使用find -exec它.所以我基本上尝试了几种变体(我cat为了可测试性而替换了脚本):

find * -type f -exec cat "{}" > "{}.stdout" \;
Run Code Online (Sandbox Code Playgroud)

但由于所有数据都被写入一个字面命名的文件,因此无法使其正常工作{}.stdout.

最终,我可以使用它:

find * -type f -exec sh -c "cat {} > {}.stdout" \;
Run Code Online (Sandbox Code Playgroud)

但是,虽然这个最新的形式适用cat,我的脚本需要通过几个初始化脚本加载环境变量,因此我最终得到:

find * -type f -exec sh -c "initscript1; initscript2; ...;  myscript {} > {}.stdout" \;
Run Code Online (Sandbox Code Playgroud)

这似乎是浪费,因为我已经在我当前的shell中初始化了所有内容.

有没有更好的方法来做到这一点find?欢迎其他单行.

unix linux

18
推荐指数
2
解决办法
1万
查看次数

标签 统计

linux ×1

unix ×1