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"