如何找出当前目录中不包含单词foo(使用grep)的文件?
当前回答
您可以单独使用grep(没有find)来完成。
grep -riL "foo" .
这是对grep上使用的参数的解释
-L, --files-without-match
each file processed.
-R, -r, --recursive
Recursively search subdirectories listed.
-i, --ignore-case
Perform case insensitive matching.
如果你使用l(小写),你将得到相反的(文件匹配)
-l, --files-with-matches
Only the names of files containing selected lines are written
其他回答
我运气很好
grep -H -E -o -c "foo" */*/*.ext | grep ext:0
我用grep -v的尝试只是给了我所有没有“foo”的行。
下面的命令给出了所有不包含foo模式的文件:
find . -not -ipath '.*svn*' -exec grep -H -E -o -c "foo" {} \; | grep 0
如果你正在使用git,它会搜索所有被跟踪的文件:
git grep -L "foo"
如果你打开了**子目录globbing,你可以在跟踪文件的子集中搜索(在.bashrc中使用shopt -s globstar):
git grep -L "foo" -- **/*.cpp
如果你的grep有-L(或——files-without-match)选项:
$ grep -L "foo" *
你实际上需要:
find . -not -ipath '.*svn*' -exec grep -H -E -o -c "foo" {} \; | grep :0\$
推荐文章
- 使用Java重命名文件
- PowerShell等价于grep -f
- 如何从Python包内读取(静态)文件?
- 为什么我得到“Pickle - EOFError: run out of input”读取一个空文件?
- 查找文件名以指定字符串开头的所有文件?
- c#测试用户是否有对文件夹的写权限
- 写字符串到文本文件,并确保它总是覆盖现有的内容。
- 从另一个文件导入变量?
- 在find中使用分号(;)vs +(+)和exec
- 如何进入每个目录并执行命令?
- 寻找不属于特定用户的文件
- 如何复制文件跨计算机使用SSH和MAC OS X终端
- 如何在node.js中移动文件?
- 如何修改文本文件?
- 为什么Path。以Path.DirectorySeparatorChar开头的文件名合并不正确?