2014-09-22 195 views
0

我有一个名为lists的目录,并在其中有几个子目录,名为lists-01,lists-02等等。 在每个子目录中,我都有一个被称为清单的sript。 我想使用grep命令在每个脚本“清单”中搜索“margin”,并且想知道包含单词“margin”的特定清单脚本。 我试过使用grep命令在子目录中搜索

grep "margin" list*/checklist  

但是,这并没有给出任何结果。

回答

0

如何:

find lists -name checklist -type f -exec grep -H margin {} \; 

,说...发现,在被称为lists目录开始,以下所有目录,所有的文件名为checklist,并期待在他们的字margin打印的文件名,如果它在那里。

如果您有现代的find,,您可以用+替换\;,以允许每个find搜索多个文件并提高您的查询效率。

1

您可以使用--include来选择你想要的文件:

grep -Rl --include='*checklist' "margin" . 

我试图找出如何包括list-0*/目录,还是没能找到一种方法。


请注意,您的尝试是相当准确的。你只需要添加-R递归:

grep -R "margin" list-[0-9]*/checklist 
0

它会搜索所有命名清单递归的文件,然后在这些文件上运行grep命令查找单词“保证金”。 -l选项只会给你文件名和选项-w用于完全匹配。

find ~/list -type f -name checklist -exec grep -lw "margin" {} +