如何使用grep忽略/排除find命令输出中的文件?

问题描述 投票:-1回答:4

我正在使用find命令搜索具有某些扩展名的某些文件。我想在最后使用grep命令来忽略某些文件。

我的未完成命令是:

find . -type f \( -name "*.txt" -or -name "*.html" -or -name "*.css" -or -name "*.js" -or -name "*.yml" \) | grep ..

假设我想忽略2个文件:cards.js和radios-and-checkboxes.css

如何使用grep命令实现它?我知道有一些方法没有使用grep命令,但我想知道如何使用grep。

我已经寻找了不同的解决方案,但大多数提到排除单词或文件扩展名或使用find命令来执行类似的任务。

bash grep find
4个回答
1
投票

您可以使用grep的-v标志来实现此目的。为了从结果中排除一个这样的项目:

your commands here | grep -v "cards.js"

如果你想链接多个grep匹配,请执行以下操作:

yourcommands here | grep -v -e "cards.js" -e "radios-and-checkboxes.css"`

如果你想要与grep中的字符串完全匹配,请使用-w。因此,要与“cards.js”完全匹配,请使用:grep -v -w -e "cards.js"。使用-w一次将适用于多个扩展。


1
投票

你在问grep -v

 $ echo -e "a\nb\nc" | grep -v b

这打印除了b之外的所有内容

使用“-e”排除多个匹配,

 $ echo -e "a\nb\nc" | grep -v -e a -e b

这不包括ab


1
投票

-E中使用-v(扩展)和grep(反向匹配):

find ... | grep -v -E 'cards\.js|radios-and-checkboxes\.css'

|字符是OR运算符。


0
投票

没有find的纯grep解决方案:

find . -type f \( \( -name "*.txt" -o -name "*.html" -o -name "*.css" -o -name "*.js" -o -name "*.yml" \) -a ! -name "radios-and-checkboxes.css" -a ! -name "cards.js" \)
© www.soinside.com 2019 - 2024. All rights reserved.