使用find -exec时出现exec()错误

时间:2012-07-30 13:34:51

标签: c find exec

我要在脚本中找到一个名为 Test 的可执行文件,它将路径作为参数,并执行它。我正在用这条线做这件事:

find -name Test -exec {} path \;

测试中,我得到了一个execl:

    execl("./Test1","Test1",(char*)0);
    perror("Exec failed");
    exit(EXIT_FAILURE);

其中 Test1 位于 Test 的同一目录中。手动执行测试一切正常,但使用上面写的这行我有一个 Exec失败:没有这样的文件或目录错误。

怎么了?

1 个答案:

答案 0 :(得分:4)

从正在执行的目录Test中查找执行find。如果您可以更改Test的代码,则将Test1的绝对路径设置为:

execl("/home/myuser/some/path/Test1","Test1",(char*)0);
perror("Exec failed");
exit(EXIT_FAILURE);

或者您可以使用-execdir代替-exec

find -name Test -execdir {} path \;

从查找联系人页面:

  

-execdir :与-exec类似,但指定的命令是从子目录运行的   包含匹配的文件,通常不是目录   你开始找到了