Bash ';查找/用户…';有效,但';找到…';和';查找…';不要。为什么?

Bash ';查找/用户…';有效,但';找到…';和';查找…';不要。为什么?,bash,find,Bash,Find,我不明白为什么前两次不行,第三次不行。在等待了一段时间错误消息后,中断发生了。我以前成功地使用过前两种模式,只是在搜索字符串上有所不同 MBP-WWG:RJG WGroleau$ find . -type f -exec grep -il Durango "{}" \; grep -v Library find: grep: unknown primary or operator MBP-WWG:RJG WGroleau$ find ~ -type f -exec grep -il Durang

我不明白为什么前两次不行,第三次不行。在等待了一段时间错误消息后,中断发生了。我以前成功地使用过前两种模式,只是在搜索字符串上有所不同

MBP-WWG:RJG WGroleau$ find . -type f -exec grep -il Durango "{}" \; grep -v Library
find: grep: unknown primary or operator
MBP-WWG:RJG WGroleau$ find ~ -type f -exec grep -il Durango "{}" \; grep -v Library
find: grep: unknown primary or operator
MBP-WWG:RJG WGroleau$ find /Users -type f -exec grep -il Durango "{}" \; > /tmp/tmp
^C
哪个find
返回
/usr/bin/find
(MacOS)

您有第二个
grep
命令挂起导致麻烦。也许你是想把第一次的结果传给第二次

find . -type f -exec grep -il Durango "{}" \; | grep -v Library
#                                             ^
FWIW,GNU
grep
可以使用
-R
/
-R
递归搜索。无需使用
find

grep -Ril Durango . | grep -v Library
顺便说一句,你可以替换

find . -type f -exec grep -il Durango "{}" \;

-r
表示递归和
-s
静默。有关详细信息,请参见
man grep
。它可以工作,因为您可以找到所有文件

因此,最后的命令将是:

grep -rs -il Durango . | grep -v Library

我不明白你为什么要添加
-s
。您试图抑制的错误消息是什么?顺便说一句,您的命令和OP的一个区别是
grep-r
将跟随符号链接,而
find
不会跟随符号链接(除非您指定
-L
选项)。这可能对OP的情况有影响,也可能没有影响。
grep -rs -il Durango .
grep -rs -il Durango . | grep -v Library