我有一个只写数据的脚本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?欢迎其他单行.