我正在尝试找到一种方法来扫描整个Linux系统,查找包含特定文本字符串的所有文件.只是为了澄清,我在文件中寻找文本,而不是文件名.
当我查找如何做到这一点时,我遇到了两次这个解决方案:
find / -type f -exec grep -H 'text-to-find-here' {} \;
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用.它似乎显示系统中的每个文件.
这是否接近正确的方法呢?如果没有,我该怎么办?这种在文件中查找文本字符串的能力对于我正在做的一些编程项目非常有用.
我想要grep一个字符串,但也显示前面的五行和以下五行以及匹配的行.我怎么能这样做?
我过去的某个时候删除了文件或某些代码.我可以在内容中进行grep(不在提交消息中)吗?
一个非常糟糕的解决方案是grep日志:
git log -p | grep <pattern>
Run Code Online (Sandbox Code Playgroud)
但是,这不会立即返回提交哈希.我一直玩得git grep无济于事.
如何grep在Linux上使用仅显示文件名(无内联匹配)?
我通常使用类似的东西:
find . -iname "*php" -exec grep -H myString {} \;
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得文件名(带路径),但没有匹配?我必须使用xargs吗?在我的grep手册页上,我没有看到这样做的方法.
我有一个程序可以将信息写入stdout和stderr,并且我需要grep通过什么来到stderr,而忽略了stdout.
我当然可以分2步完成:
command > /dev/null 2> temp.file
grep 'something' temp.file
Run Code Online (Sandbox Code Playgroud)
但我宁愿能够在没有临时文件的情况下做到这一点.有没有任何智能管道技巧?
我一直在试图找出这个命令的语法:
grep ! error_log | find /home/foo/public_html/ -mmin -60
Run Code Online (Sandbox Code Playgroud)
要么
grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60
Run Code Online (Sandbox Code Playgroud)
我需要查看所有已修改的文件,除了那些已命名的文件error_log.
我在这里读过它,但只发现了一个not-regex模式.
我正在编写一些脚本到grep某些目录,但这些目录包含各种文件类型.
我想grep只是.h和.cpp现在,但也许其他几个人的未来.
到目前为止,我有:
{ grep -r -i CP_Image ~/path1/;
grep -r -i CP_Image ~/path2/;
grep -r -i CP_Image ~/path3/;
grep -r -i CP_Image ~/path4/;
grep -r -i CP_Image ~/path5/;} 
| mailx -s GREP email@domain.com
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我如何添加特定的文件扩展名?
我正在寻找foo=目录树中的文本文件中的字符串.它在一台普通的Linux机器上,我有bash shell:
grep -ircl "foo=" *
Run Code Online (Sandbox Code Playgroud)
在目录中还有许多匹配"foo ="的二进制文件.由于这些结果不相关并且减慢了搜索速度,我希望grep跳过搜索这些文件(主要是JPEG和PNG图像).我该怎么办?
我知道有--exclude=PATTERN和--include=PATTERN选项,但模式格式是什么?grep的手册页说:
--include=PATTERN     Recurse in directories only searching file matching PATTERN.
--exclude=PATTERN     Recurse in directories skip file matching PATTERN.
Run Code Online (Sandbox Code Playgroud)
搜索grep include,grep include exclude,grep exclude和variants没有找到任何相关内容
如果有一种更好的方法只在某些文件中进行grepping,我就是全力以赴; 移动违规文件不是一种选择.我不能只搜索某些目录(目录结构很乱,随处可见).另外,我无法安装任何东西,所以我必须使用常用工具(如grep或建议的查找).
这是否可以grep连续使用?
我的意思是一种tail -f <file>命令,但grep在输出上只是为了保留我感兴趣的行.
我已经尝试了,tail -f <file> | grep pattern但似乎grep只能执行一次tail,也就是说永远不会.