如何找出当前目录中不包含单词foo(使用grep)的文件?
当前回答
下面的命令可以帮助你过滤包含子字符串“foo”的行。
cat file | grep -v "foo"
其他回答
你实际上需要:
find . -not -ipath '.*svn*' -exec grep -H -E -o -c "foo" {} \; | grep :0\$
当grep没有-L选项时(例如IBM AIX),只有grep和shell时的另一种选择:
for file in * ; do grep -q 'my_pattern' $file || echo $file ; done
您可以单独使用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
如果你正在使用git,它会搜索所有被跟踪的文件:
git grep -L "foo"
如果你打开了**子目录globbing,你可以在跟踪文件的子集中搜索(在.bashrc中使用shopt -s globstar):
git grep -L "foo" -- **/*.cpp
我的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 ">"
推荐文章
- 如何从查找“类型d”中排除此/ current / dot文件夹
- 从包含文件名的路径获取不包含文件名的完整路径
- 如何拉特定的目录与git
- Git:从另一个分支复制目录中的所有文件
- PHP,获取没有文件扩展名的文件名
- 显示所有集合中的所有内容
- 'find -exec'是Linux中的shell函数
- 如何管道列表的文件返回的找到命令到猫查看所有文件
- 如何在远程系统上使用Ansible任务移动/重命名文件
- 从java.io.File获取java.nio.file.Path对象
- Chmod递归
- 如何将多行输出连接到一行?
- 使用grep搜索包含点的字符串
- 用c#编写数据到CSV文件
- 安卓系统;检查文件是否存在而不创建新的文件