根据文件名模式和文件内容列出文件名?
如何使用 grep 命令根据通配符 "LMN2011*"
搜索文件名
,列出以此开头的所有文件?
我想对这些文件内容添加另一个检查。
如果文件内容
有类似的内容
LMN20113456
我可以使用grep
来做这个吗?
grep -ls "LMN2011*" "LMN20113456"
使用 shell 命令搜索文件名及其内容的正确方法是什么?
How can I use grep command to search file name
based on a wild card "LMN2011*"
listing all files with this as beginning?
I want to add another check on those file content.
If file content
has some thing like
LMN20113456
Can I use grep
for this?
grep -ls "LMN2011*" "LMN20113456"
What is the proper way to search the file names and its contents using shell commands?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
Grep 不使用“通配符”进行搜索 – 这是 shell 通配符,如 *.jpg。
Grep 使用“正则表达式”进行模式匹配。在 shell 中,'*' 表示“任何内容”,而在 grep 中,它表示“匹配前一项零次或多次”。
更多信息和示例请参见:http://www.regular-expressions.info/reference.html
要回答您的问题 - 您可以使用 grep 找到与某些模式匹配的文件:
然后您可以搜索它们的内容(不区分大小写):
如果路径可以包含空格,您应该使用“零结束”功能:
Grep DOES NOT use "wildcards" for search – that's shell globbing, like *.jpg.
Grep uses "regular expressions" for pattern matching. While in the shell '*' means "anything", in grep it means "match the previous item zero or more times".
More information and examples here: http://www.regular-expressions.info/reference.html
To answer of your question - you can find files matching some pattern with grep:
Then you can search their content (case insensitive):
If the paths can contain spaces, you should use the "zero end" feature:
无需
find
也可以通过使用 grep 的"--include"
选项来完成。grep 手册页说:
因此,要在与特定模式匹配的文件中递归搜索字符串,它将看起来像这样:
例如,在所有 Makefile 中递归搜索字符串“mytarget”:
或者在所有文件中搜索文件名以“Make”开头:
It can be done without
find
as well by using grep's"--include"
option.grep man page says:
So to do a recursive search for a string in a file matching a specific pattern, it will look something like this:
For example, to recursively search for string "mytarget" in all Makefiles:
Or to search in all files starting with "Make" in filename:
或者如果您想通过子目录递归搜索:
or if you want to search recursively through subdirectories:
假设
LMN2011*
文件位于/home/me
内,但跳过/home/me/temp
或以下内容:Assume
LMN2011*
files are inside/home/me
but skipping anything in/home/me/temp
or below: