我需要一个简短的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
这种方法有效,但需要花费太多时间。有人知道更快的方法吗?如果另一种脚本语言是更好的选择,那也没关系。
祝你好运, 迈克尔
答案 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/*