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

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

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

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

 find: â-Hwâ: No such file or directory, in linux 

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

  • Извлечение списка шаблонов, которые выводятся из другой команды
  • Как я могу скопировать каталог на основе содержимого двух последовательных строк?
  • Странное поведение «ls -a | grep ^ \. "
  • Как ускорить работу скрипта на основе поиска grep?
  • grep для строк / файлов, содержащих точно х символов
  • Как я могу использовать sed, чтобы отрезать строку от строки?
  • Как показать все файлы в каталоге, кроме тех, которые имеют определенное расширение и отображать их в нескольких столбцах?
  • Перенаправление вывода в зависимости от регулярного выражения grep
  • 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 - лучшая ОС в мире.