Поиск второй строки файлов и имена файлов для печати в stdout

У меня есть несколько каталогов из ~ 10 000 файлов. Каков самый быстрый способ поиска каждого файла и возврата имени файла, если вторая строка содержит определенную строку?

Отредактировано для ясности

  • Одиночная запись файла, разбитого на несколько строк
  • Замените одну строку на STDIN в Makefile
  • sed предотвращает удаление остальной линии
  • Различия между sed #,%, / и |
  • Вставьте новую строку перед каждой строкой, соответствующей шаблону, если предыдущая строка уже не указана
  • Греп, чтобы найти правильную строку, sed, чтобы изменить содержимое, а затем вернуть его в исходный файл?
  • Как вставить переменную в переменную в случайном месте?
  • Как заменить открытые скобки с конца строки на новую строку с помощью sed?
  • 2 Solutions collect form web for “Поиск второй строки файлов и имена файлов для печати в stdout”

    awk 'FNR==2 {if (/some string/) print FILENAME; nextfile}' ./* 

    У некоторых awks нет «nextfile».

    Я не уверен в высокой скорости, но должен работать тоже

     for i in * do { IFS= read -r line1 && IFS= read -r line2 && case $line2 in *some_string*) printf "%s\n" "$i" ;; esac } < "$i" done 
    Linux и Unix - лучшая ОС в мире.