find -exec问题请教

sh/bash/dash/ksh/zsh等Shell脚本
回复
blackthought
帖子: 57
注册时间: 2007-02-05 13:07

find -exec问题请教

#1

帖子 blackthought » 2015-03-21 13:44

代码: 全选

find -name ‘*.c’ -exec grep -l abc {} \;
请问find的-exec里{} 和\;代表什么意思?
grep里加了-l 只显示文件名,能文件名和内容一起显示吗?

谢谢了
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: find -exec问题请教

#2

帖子 astolia » 2015-03-21 16:51

要学会查manpage,里面解释得很清楚
-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
. See the EXAMPLES sec‐
tion for examples of the use of the -exec option. The specified
command is run once for each matched file. The command is exe‐
cuted in the starting directory. There are unavoidable secu‐
rity problems surrounding use of the -exec action; you should
use the -execdir option instead.
想要同时显示内容和文件名,可以用-H参数

代码: 全选

find -name '*.c' -exec grep -H abc {} \;
回复