列出所有文件并查找特定文件位置

时间:2016-09-26 12:54:14

标签: linux shell unix

我想列出文件夹中的.xml文件。为此我做了:

find . -name *.xml

结果将是文件位置,我应该cat并为文本test执行grep,如果存在test则打印文件位置,否则跳过。

首先我尝试了:

find . -name *.xml | xargs cat * | grep test

但是会打印匹配的行,但不打印文件位置。我用grep尝试了-b-l命令来获取文件位置,但它不起作用。

并且cat仅在给定位置打印文件,但不以递归方式访问。

2 个答案:

答案 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)。