Comment exécuter find -exec?

Je voudrais find les files dans le directory courant qui contiennent le text "chrome".

$ find . -exec grep chrome find: missing argument to `-exec' 

Qu'est-ce que je fais mal?

    Vous avez manqué un ; ou a + et a {} :

     find . -exec grep chrome {} \; 

    ou

     find . -exec grep chrome {} + 

    find exécutera grep et replacea {} par le (s) nom (s) de file trouvé. La différence entre ; et + est-ce avec ; une seule command grep pour chaque file est exécutée alors qu'avec + autant de files que possible sont donnés en tant que parameters à grep en même time.

    Vous n'avez pas besoin d'utiliser find pour cela du tout; grep est capable de gérer l'ouverture des files soit à partir d'une list globale de tout dans le directory courant:

     grep chrome * 

    … ou même récursivement pour le dossier et tout ce qu'il contient:

     grep chrome . -R 
     find . | xargs grep 'chrome' 

    vous pouvez aussi faire:

     find . | xargs grep 'chrome' -ls 

    Le premier vous montre les lignes dans les files, le second list les files.

    L'option de Caleb est plus simple, less de frappes.

    Trouver est un moyen et vous pouvez essayer the_silver_searcher puis tout ce que vous devez faire est

     ag chrome 

    Il searchra chrome dans tous les files (inclure les sous-directorys) et il est plus rapide que find

    Pour voir la list des files au lieu des lignes:

     grep -l "chrome" * 

    ou:

     grep -r -l "chrome" . 

    Voici un exemple de la façon dont j'utilise généralement find / exec …

     find . -name "*.py" -print -exec fgrep hello {} \; 

    Cette search récursive pour tous les files .py, et pour chaque file imprime le nom de file et fgrep pour «bonjour» sur ce (pour chaque) file. Sortie ressemble (juste couru un aujourd'hui):

     ./r1.py ./cgi-bin/tst1.py print "hello" ./app/__init__.py ./app/views.py ./app/flask1.py ./run.py ./tst2.py print "hello again"