Bash 如何使用find+grep排除目录?

Bash 如何使用find+grep排除目录?,bash,shell,grep,directory,find,Bash,Shell,Grep,Directory,Find,在Bash中,我试图在多个分散的文件中找到一个字符串 我试图排除grep访问/sys时出现的数千个错误: find / -type f ! -path "/sys" -exec grep -l StringToFind {} \; find / -type f -exec grep -l --exclude-dir="/sys" StringToFind {} \; 有人能解释为什么上述两种方法都不起作用吗? 我用grep-v和egrep尝试了一些其他的变体,但没有成功 排除多个目录和模式怎么

在Bash中,我试图在多个分散的文件中找到一个字符串

我试图排除grep访问/sys时出现的数千个错误:

find / -type f ! -path "/sys" -exec grep -l StringToFind {} \;
find / -type f -exec grep -l --exclude-dir="/sys" StringToFind {} \;
有人能解释为什么上述两种方法都不起作用吗? 我用grep-v和egrep尝试了一些其他的变体,但没有成功


排除多个目录和模式怎么样?

-路径/系统

您提供了要查找的绝对路径,该路径仅适用于确切的目录或file/sys,而不适用于任何子目录。如果您希望/sys以下的任何内容都为真,那么它应该是-path/sys/*或-路径/系统-路径/sys/*用于两者 -path在遍历一个目录时不会停止查找,所以您仍然可以获得它下面的文件的错误 试一试

或者更好的是,您的-exclude dir失败的原因与-find类似,因为它是非递归的,您只包含确切的参数/sys,而find无论如何都不会传递给它

grep -r -l --exclude-dir="/sys" StringToFind /

你有没有可能需要和格雷普通电话?i、 e.查找/类型f-path/sys-exec | grep-l StringToFind{};没有Michael as exec需要参数。请尝试以下查找/-type f-exec grep字符串{}\-o-name/sys-pruneStill no joy Mark-2来自find的警告。当我删除–在删除之后,grep仍然检查/sys并发出抱怨。@MarkSetchell关闭,但是-name接受一个文件-path接受一个路径。
grep -r -l --exclude-dir="/sys" StringToFind /