bash脚本获取包含特殊行的子文件夹中的文件

时间:2012-01-02 19:32:15

标签: bash

我需要一个简短的bash脚本帮助你。我有一个文件夹,其中包含大约150,000(!)个xml文件。我需要一个脚本来提取包含指定行的所有文件。脚本应该尽可能快地工作,因为脚本必须经常使用。

我的第一个方法如下,使用grep:

for f in temp/*
do
   if grep "^.*the line which should be equal.*$" "$f" 
   then 
      echo "use this file"
   else 
      echo "this file does not contain the line"
   fi
done

这种方法有效,但需要花费太多时间。有人知道更快的方法吗?如果另一种脚本语言是更好的选择,那也没关系。

祝你好运, 迈克尔

1 个答案:

答案 0 :(得分:3)

您可以在没有任何bash处理程序的情况下使用grep。

   -l, --files-with-matches
          Suppress normal output; instead print the name of each input file from which output would normally have been printed.  The scanning will stop on the first  match.   (-l  is
          specified by POSIX.) 

所以,试试这个:

grep "the line which should be equal" --files-with-matches  temp/*