相关文章推荐
魁梧的硬币  ·  Laya ...·  7 月前    · 
有情有义的香烟  ·  【ARXIV2207】HorNet: ...·  1 年前    · 
开朗的枕头  ·  New-AzureADMSGroup ...·  1 年前    · 

execl + find + -exec:缺少`-exec'的参数

0 人关注

我试图用 find ... -exec ... 运行 execlp ,而 find 程序始终告诉我。

find: missing argument to `-exec'

会有什么问题呢?当我在shell上用这些参数运行find时,它成功了。

我的函数调用如下(在看了相关的SO主题后,我尝试了几种参数的安排)。

execlp("find","find","/home/me","-exec","/usr/bin/stat", "{}", "\\;",NULL);
execlp("find","find","/home/me","-exec","/usr/bin/stat", "'{}'", "\\;",NULL);
execlp("find","find","/home/me","-exec","/usr/bin/stat", "{}", "';'",NULL);
execlp("find","find","/home/me","-exec","/usr/bin/stat {} \\;",NULL);
    
2 个评论
execlp == C ? 在linux下?也许要加上这些标签。
@PatrickArtner : 已添加
c
linux
find
execl
JellicleCat
JellicleCat
发布于 2017-12-11
1 个回答
Déjà vu
Déjà vu
发布于 2017-12-11
已采纳
0 人赞同

当你从C语言中执行命令时,你不需要在 \ 之前加上 ;

使用这种语法应该可以

execlp("find","find","/home/me","-exec","/usr/bin/stat", "{}", ";",NULL);

在shell中,;标志着一个命令的结束,必须被转义。替换代码4】并不通过shell来执行命令,它立即执行。