根据文件名模式和文件内容列出文件名?

发布于 2024-11-06 04:37:05 字数 309 浏览 0 评论 0原文

如何使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

无畏 2024-11-13 04:37:05

Grep 不使用“通配符”进行搜索 – 这是 shell 通配符,如 *.jpg。
Grep 使用“正则表达式”进行模式匹配。在 shell 中,'*' 表示“任何内容”,而在 grep 中,它表示“匹配前一项零次或多次”。

更多信息和示例请参见:http://www.regular-expressions.info/reference.html

要回答您的问题 - 您可以使用 grep 找到与某些模式匹配的文件:

find /somedir -type f -print | grep 'LMN2011' # that will show files whose names contain LMN2011

然后您可以搜索它们的内容(不区分大小写):

find /somedir -type f -print | grep -i 'LMN2011' | xargs grep -i 'LMN20113456'

如果路径可以包含空格,您应该使用“零结束”功能:

find /somedir -type f -print0 | grep -iz 'LMN2011' | xargs -0 grep -i 'LMN20113456'

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:

find /somedir -type f -print | grep 'LMN2011' # that will show files whose names contain LMN2011

Then you can search their content (case insensitive):

find /somedir -type f -print | grep -i 'LMN2011' | xargs grep -i 'LMN20113456'

If the paths can contain spaces, you should use the "zero end" feature:

find /somedir -type f -print0 | grep -iz 'LMN2011' | xargs -0 grep -i 'LMN20113456'
戏剧牡丹亭 2024-11-13 04:37:05

无需 find 也可以通过使用 grep 的 "--include" 选项来完成。

grep 手册页说:

--include=GLOB
Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).

因此,要在与特定模式匹配的文件中递归搜索字符串,它将看起来像这样:

grep -r --include=<pattern> <string> <directory>

例如,在所有 Makefile 中递归搜索字符串“mytarget”:

grep -r --include="Makefile" "mytarget" ./

或者在所有文件中搜索文件名以“Make”开头:

grep -r --include="Make*" "mytarget" ./

It can be done without find as well by using grep's "--include" option.

grep man page says:

--include=GLOB
Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).

So to do a recursive search for a string in a file matching a specific pattern, it will look something like this:

grep -r --include=<pattern> <string> <directory>

For example, to recursively search for string "mytarget" in all Makefiles:

grep -r --include="Makefile" "mytarget" ./

Or to search in all files starting with "Make" in filename:

grep -r --include="Make*" "mytarget" ./
み格子的夏天 2024-11-13 04:37:05
grep LMN20113456 LMN2011*

或者如果您想通过子目录递归搜索:

find . -type f -name 'LMN2011*' -exec grep LMN20113456 {} \;
grep LMN20113456 LMN2011*

or if you want to search recursively through subdirectories:

find . -type f -name 'LMN2011*' -exec grep LMN20113456 {} \;
韬韬不绝 2024-11-13 04:37:05

查找/文件夹-type f -mtime -90 | grep -E
“(.txt|.php|.inc|.root|.gif)”| xargs ls -l > >
WWWlastActivity.log

find /folder -type f -mtime -90 | grep -E
"(.txt|.php|.inc|.root|.gif)" | xargs ls -l >
WWWlastActivity.log

昵称有卵用 2024-11-13 04:37:05

假设 LMN2011* 文件位于 /home/me 内,但跳过 /home/me/temp 或以下内容:

find /home/me -name 'LMN2011*' -not -path "/home/me/temp/*" -print | xargs grep 'LMN20113456'

Assume LMN2011* files are inside /home/me but skipping anything in /home/me/temp or below:

find /home/me -name 'LMN2011*' -not -path "/home/me/temp/*" -print | xargs grep 'LMN20113456'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文