gpt4 book ai didi

unix - 从 find 命令的结果中过滤文件

转载 作者:行者123 更新时间:2023-12-01 09:49:09 24 4
gpt4 key购买 nike

我想在文件目录中查找特定模式,并希望在显示结果时排除某些模式。

我使用以下命令

find . -type f -exec grep -il 'foo' {} \; | find . -not -name "*.jar" -not -name "*.gz" -not -name "*.log" 2>/dev/null

显示结果时,我看到以下错误消息
find: grep terminated by signal 13

有人可以指导我为什么会出现此错误消息,以及是否有更好的命令可用于获得所需的结果(基本上从结果集中排除 jar 文件或日志文件或某些其他类型的文件)?

最佳答案

我认为您正试图在该管道的后半部分使用 find 作为 grepfind 不是这样工作的。您应该做的是在一个命令中完成所有操作:

find . -type f -not -name "*.jar" -not -name "*.gz" -not -name "*.log" -exec grep -il 'foo' + 2>/dev/null

或者
find . -type f -not -name "*.jar" -not -name "*.gz" -not -name "*.log" -exec grep -qi 'foo' \; -print 2>/dev/null

或者让 grep 遍历树本身并在之后过滤名称(使用 grep ,而不是 find ):
grep -irl foo . | grep -v -e '\.jar$' -e '\.gz$' -e '\.log$'

关于unix - 从 find 命令的结果中过滤文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18447199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com