如何找出当前目录中不包含单词foo(使用grep)的文件?


当前回答

这可能会对其他人有所帮助。我有混合文件Go和测试文件。但我只需要。go文件。所以我用了

ls *.go | grep -v "_test.go"

-v,——invert-match选择不匹配的行参见https://stackoverflow.com/a/3548465

也可以使用vscode从终端打开所有文件

code $(ls *.go | grep -v "_test.go")

其他回答

如果你的grep有-L(或——files-without-match)选项:

$ grep -L "foo" *

下面的命令可以帮助你过滤包含子字符串“foo”的行。

cat file | grep -v "foo"

我运气很好

grep -H -E -o -c "foo" */*/*.ext | grep ext:0

我用grep -v的尝试只是给了我所有没有“foo”的行。

我的grep没有任何-L选项。我确实找到了解决办法。

这些想法是:

将包含相应字符串的所有文件名转储到txt1.txt。 将目录中的所有文件名转储到txt2.txt文件中。 使用diff命令区分2个转储文件。 Grep 'foo' *.log | cut -c1-14 | uniq > txt1.txt Grep * *.log | cut -c1-14 | uniq > txt2.txt Diff txt1.txt txt2.txt | grep ">"

下面的命令不需要find通过使用第二个grep来过滤svn文件夹。

grep -rL "foo" ./* | grep -v "\.svn"