我想列出文件夹中的.xml文件。为此我做了:
find . -name *.xml
结果将是文件位置,我应该cat
并为文本test
执行grep,如果存在test
则打印文件位置,否则跳过。
首先我尝试了:
find . -name *.xml | xargs cat * | grep test
但是会打印匹配的行,但不打印文件位置。我用grep尝试了-b
,-l
命令来获取文件位置,但它不起作用。
并且cat
仅在给定位置打印文件,但不以递归方式访问。
答案 0 :(得分:2)
试试这个:
find . -name *.xml -exec grep -l test {} +
这将对find找到的所有文件执行grep -l test
。
答案 1 :(得分:0)
您可以使用globstar
shell选项启用子目录globbing:
shopt -s globstar
grep -l 'test' **/*.xml
启用globstar
后,**
会匹配“所有文件以及零个或多个子目录”(请参阅the manual)。