运行 find 时出现问题:缺少“-exec”参数

运行 find 时出现问题:缺少“-exec”参数

我想在当前目录中查找包含文本“chrome”的文件。

$ find . -exec grep chrome
find: missing argument to `-exec'

我究竟做错了什么?

答案1

您错过了 a ;(此处转义以\;防止 shell 解释它)或 a+和 a {}

find . -exec grep chrome {} \;

或者

find . -exec grep chrome {} +

find将执行grep并替换{}为找到的文件名。;和之间的区别+在于,对于每个文件执行;单个命令,而一次将尽可能多的文件作为参数给出。grep+grep

答案2

find您根本不需要为此使用; grep 能够从当前目录中所有内容的全局列表中打开文件:

grep chrome *

...或者甚至递归文件夹及其下的所有内容:

grep chrome . -R

答案3

find . | xargs grep 'chrome'

你还可以这样做:

find . | xargs grep 'chrome' -ls

第一个显示文件中的行,第二个仅列出文件。

Caleb 的选择更简洁,击键次数更少。

答案4

这是我通常如何使用 find/exec 的示例...

find  . -name "*.py" -print -exec fgrep hello {} \;

这会递归搜索所有 .py 文件,并为每个文件打印出文件名,并使用 fgrep 查找该(每个)文件上的“hello”。输出看起来像(今天刚刚运行了一个):

./r1.py
./cgi-bin/tst1.py
print "hello"
./app/__init__.py
./app/views.py
./app/flask1.py
./run.py
./tst2.py
print "hello again"

相关内容