我有一堆子文件夹,每个子文件夹都包含一个输入文件an_*
和一个可执行文件run
。在一个子文件夹中执行一次的命令行是./run <an_*
.
我想要做的是找到包含文件的所有子文件夹并作为输入an_*
执行。我最好的选择是: 但这行不通。run
an_*
find -name an_* -execdir ./run <'{}' \;
答案1
如果您只是在 find 命令行上删除输入重定向<
,shell 将尝试将输入重定向到寻找。您想要的是在 find 执行的命令上发生重定向。但find
不知道如何进行重定向,因此您必须明确要求它运行 shell 来解析您给出的命令。像这样的东西:
find -name "an_*" -execdir sh -c "./run < {}" \;