我如何使用grep命令搜索file name的基础上的通配符"LMN2011*"列出所有以此为开始的文件?我想对这些文件内容添加另一个检查。如果file content有一些东西
file name
"LMN2011*"
file content
LMN20113456
我可以使用grep吗?
grep
grep -ls "LMN2011*" "LMN20113456"
使用shell命令搜索文件名及其内容的正确方法是什么?
drnojrws1#
Grep不使用“通配符”进行搜索--这是shell globbing,比如 。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'
如果路径可以包含空格,则应使用“zero end”功能:
find /somedir -type f -print0 | grep -iz 'LMN2011' | xargs -0 grep -i 'LMN20113456'
hgc7kmma2#
不使用find也可以通过使用grep的"--include"选项来完成。grep man page说道:
find
"--include"
--include=GLOB Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).
因此,要在文件中递归搜索匹配特定模式的字符串,它看起来像这样:
grep -r --include=<pattern> <string> <directory>
例如,要在所有Makefile中递归搜索字符串“mytargeta”:
grep -r --include="Makefile" "mytarget" ./
或者搜索所有文件名中以“Make”开头的文件:
grep -r --include="Make*" "mytarget" ./
v09wglhw3#
grep LMN20113456 LMN2011*
或者如果你想通过子目录递归搜索:
find . -type f -name 'LMN2011*' -exec grep LMN20113456 {} \;
zyfwsgd64#
find /folder -type f -mtime -90|grep -E“(.文本|.php|.inc|.root|.gif)”|xargs ls -l〉WWWlastActivity。原木
mec1mxoz5#
假设LMN2011*文件位于/home/me内部,但跳过/home/me/temp或以下文件:
LMN2011*
/home/me
/home/me/temp
find /home/me -name 'LMN2011*' -not -path "/home/me/temp/*" -print | xargs grep 'LMN20113456'
5条答案
按热度按时间drnojrws1#
Grep不使用“通配符”进行搜索--这是shell globbing,比如 。Grep使用“正则表达式”进行模式匹配。虽然在shell中''表示“任何”,但在grep中它表示“匹配前一项零次或多次”。
更多信息和例子在这里:http://www.regular-expressions.info/reference.html
为了回答你的问题-你可以用grep找到一些匹配模式的文件:
然后您可以搜索其内容(不区分大小写):
如果路径可以包含空格,则应使用“zero end”功能:
hgc7kmma2#
不使用
find
也可以通过使用grep的"--include"
选项来完成。grep man page说道:
因此,要在文件中递归搜索匹配特定模式的字符串,它看起来像这样:
例如,要在所有Makefile中递归搜索字符串“mytargeta”:
或者搜索所有文件名中以“Make”开头的文件:
v09wglhw3#
或者如果你想通过子目录递归搜索:
zyfwsgd64#
find /folder -type f -mtime -90|grep -E“(.文本|.php|.inc|.root|.gif)”|xargs ls -l〉WWWlastActivity。原木
mec1mxoz5#
假设
LMN2011*
文件位于/home/me
内部,但跳过/home/me/temp
或以下文件: