我有一个脚本只能将数据写入stdout
。我需要运行它为多个文件,并为每个输入文件生成不同的输出文件,我想知道如何使用find -exec
。所以我基本上尝试的这几款变种(我更换了剧本由cat
只是测试性的目的):使用find -exec重定向stdout并且不创建新的shell
找到*型的F -exec猫 “{}”> “{} .stdout” \;
但由于所有的数据都被写入一个字面上名为{}.stdout
的文件,所以无法工作。
最后,我可以把它一起工作:
发现*型的F -exec SH -c “猫{}> {} .stdout” \;
不过,虽然这种最新形式与cat
效果很好,我的脚本需要通过几个初始化脚本加载环境变量,因此,我结束了:
发现*型的F -exec SH -c“ initscript1; initscript2; ...; myscript {}> {} .stdout“\;
这似乎是一种浪费,因为我已经在我的当前shell中初始化了一切。
有没有更好的方法来做到这一点find
?其他单线也欢迎。
如果它们在原始shell中初始化,但未在子shell中设置,则它们不是环境变量。在你的脚本的顶部写上'set -a'。 – 2013-02-22 18:23:25
你给出的最后一个例子是正确的还是命令:'find。 -type f -exec sh -c“。initscript1;。initscript2; ...; myscript {}> {} .stdout”\; '(而不是简单地调用'initscript1',你实际上是否在调用'.initscript1',即你正在使用点命令来源文件)。 – 2013-02-22 18:30:11