当前位置: 技术问答>linux和unix
帮忙解释一下makefile里的一个问题
来源: 互联网 发布时间:2016-04-25
本文导语: makefile里有这么一句, touch_result_files: find $(PWD) -name "*.results" -exec touch {} ; 我知道find $(PWD) -name "*.results"是找出当前目录下所有以.results为后缀的文件,在网上查了下,exec是运行另一个程序来替代当...
makefile里有这么一句,
touch_result_files:
find $(PWD) -name "*.results" -exec touch {} ;
我知道find $(PWD) -name "*.results"是找出当前目录下所有以.results为后缀的文件,在网上查了下,exec是运行另一个程序来替代当前shell,但是还是很不明白上面命令的后半段-exec touch {} ;是什么意思
touch_result_files:
find $(PWD) -name "*.results" -exec touch {} ;
我知道find $(PWD) -name "*.results"是找出当前目录下所有以.results为后缀的文件,在网上查了下,exec是运行另一个程序来替代当前shell,但是还是很不明白上面命令的后半段-exec touch {} ;是什么意思
|
touch是更新一个文件的更改时间,exec这里只是起对每一个文件执行一下touch命令的作用,为的是让所有依赖于*.reuslts的文件都得新编译。
|
那说明确实没有 匹配 *.results 的文件啊。
关于find和exec,man一下find,说得蛮清楚的
ACTIONS
-exec command ;
Execute command; true if 0 status is returned. All following
arguments to find are taken to be arguments to the command until
an argument consisting of ';' is encountered. The string '{}'
is replaced by the current file name being processed everywhere
it occurs in the arguments to the command, not just in arguments
where it is alone, as in some versions of find. Both of these
constructions might need to be escaped (with a '') or quoted to
protect them from expansion by the shell. The command is exe-
cuted in the starting directory.