zod*_*zod 38 unix linux ftp shell grep
如何使用Grep命令file name基于通配符"LMN2011*" 列出搜索所有以此为开头的文件?
我想在这些文件内容上添加另一个检查.
如果file content有一些东西喜欢
LMN20113456
Run Code Online (Sandbox Code Playgroud)
我可以用GREP它吗?
Grep -ls "LMN2011*" "LMN20113456"
Run Code Online (Sandbox Code Playgroud)
使用shell命令搜索文件名及其内容的正确方法是什么?
jm6*_*666 62
Grep不会使用"通配符"进行搜索 - 这是shell globbing,比如*.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
Run Code Online (Sandbox Code Playgroud)
然后你可以搜索他们的内容(不区分大小写):
find /somedir -type f -print | grep -i 'LMN2011' | xargs grep -i 'LMN20113456'
Run Code Online (Sandbox Code Playgroud)
如果路径可以包含空格,则应使用"零端"功能:
find /somedir -type f -print0 | grep -iz 'LMN2011' | xargs -0 grep -i 'LMN20113456'
Run Code Online (Sandbox Code Playgroud)
Jah*_*ooq 27
find使用grep "--include"选项可以完成它.
grep man page说:
--include=GLOB
Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).
Run Code Online (Sandbox Code Playgroud)
因此,要在匹配特定模式的文件中对字符串进行递归搜索,它将如下所示:
grep -r --include=<pattern> <string> <directory>
Run Code Online (Sandbox Code Playgroud)
例如,要在所有Makefile中递归搜索字符串"mytarget":
grep -r --include="Makefile" "mytarget" ./
Run Code Online (Sandbox Code Playgroud)
或者在文件名中搜索以"Make"开头的所有文件:
grep -r --include="Make*" "mytarget" ./
Run Code Online (Sandbox Code Playgroud)
grep LMN20113456 LMN2011*
Run Code Online (Sandbox Code Playgroud)
或者如果要通过子目录递归搜索:
find . -type f -name 'LMN2011*' -exec grep LMN20113456 {} \;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
137588 次 |
| 最近记录: |