grep搜索查找。仅在.txt扩展名的文件中

时间:2014-05-26 02:34:10

标签: search ubuntu grep filenames

    find . | xargs grep "Book" -sl | xargs grep -inw "Stars" -sl

这将返回包含单词" Book"的文件的文件名。和"明星"。 你如何修改它,以便你只能搜索* .txt文件? 还有办法指定搜索目录吗?

2 个答案:

答案 0 :(得分:2)

不使用太多选项(例如:-iname,-inw,等等):

locate /*txt | xargs grep -rl Book | xargs grep -rl Stars

就是这样。

更新:

如果要指定目录。举个例子:

  • 目录= /home/corbett/Documents

因此,

locate /home/corbett/Documents/*txt |xargs grep -rl Book |xargs grep -rl Stars

如果搜索不区分大小写,请对-i cmd使用grep选项:

locate /home/corbett/Documents/*txt |xargs grep -i -rl Book |xargs grep -i -rl Stars

找到与查找:

  • Find对新文件更有效。
  • Locate处理字符串数据库(文件路径)的速度最快

答案 1 :(得分:1)

只需使用-iname参数即可。它使find搜索所有带扩展名为" .txt"的文件(不区分大小写)。同时添加-type f参数以确保您只搜索文件(这应该允许您删除-s"禁止错误"传递给grep的参数)。

find . -iname "*.txt" -type f | xargs grep "Book" -sl | xargs grep -inw "Stars" -sl

您也可以使用-exec参数。

find . -iname "*txt" -type f -exec grep "Book" -lZ {} \; | xargs -0 grep -inw "Stars" -l

-Z的{​​{1}}参数和grep的{​​{1}}参数可确保文件名从一个传输到另一个工作,即使它们中包含空格也是如此。