find + grep не работает

Я хочу найти строку «ПОИСК» во всех файлах .h с помощью команды:

find . -name "*.h" -exec -Hw "SEARCH" { } \; 

но он бросает ошибку как:

  • Получить файлы с именем, содержащим значение даты, меньшее или равное заданной дате ввода
  • Фильтровать столбцы на основе значения другого столбца
  • grep и напечатать, сколько раз мой шаблон в файле 1 присутствует в файле2
  • Отметить появление ключевого слова с другим цветом
  • Чтобы удалить лишнее пространство из строки с помощью команды оболочки
  • Как «grep» для длины строки * not * в заданном диапазоне?
  •  find: â-Hwâ: No such file or directory, in linux 

    дайте мне знать, как его решить.

  • Быстрое извлечение поля с помощью grep
  • Использование grep / sort / find для извлечения уникальных значений
  • Объединение столбцов в 2 файла и печать значений, которые различаются
  • Использование фиксированных строк в регулярных выражениях?
  • Измените текст в теге, но только тег содержится в определенном блоке XML
  • Количество файлов, не содержащих заданную строку
  • 2 Solutions collect form web for “find + grep не работает”

    Вы можете использовать grep для find :

     find . -name "*.h" -exec grep "SEARCH" {} \; 

    Вы забыли команду «grep». Сделайте это вместо этого:

     find . -type f -name "*.h" -exec grep -F -Hw "SEARCH" {} + 

    Заметьте, что я изменил:

    • добавлен- -type f
    • добавлена ​​команда grep -F
    • изменен { } на {} , иначе он не будет работать
    • изменено ; до + (плюс) в конце -exec инструкции, так что выполняется только один grep для кучи файлов (ускоряйте вещи, гораздо более дружественные к ресурсам)
    Linux и Unix - лучшая ОС в мире.