Для больших файлов, если вы уверены, что целевая строка находится в конце их, используйте tail
:
tail -n 10 filename.xml | grep "</root>" # will check the last 10 lines for the pattern
Проверено на текстовом файле ~ 7 ГБ, одиночные grep
~ 20 с, с tail
меньше 0,01 с
Для количества файлов (и печатаемых имен файлов, которые НЕ содержат шаблон):
for f in *.xml ; do tail -n 10 "$f" | grep -q "</root>" || echo "$f" ; done