Как запустить find -exec?

Я хотел бы найти файлы в текущей директории, содержащей текст «chrome».

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

Что я делаю неправильно?

340 голосов | спросил ripper234 9 Maypm11 2011, 21:35:13

6 ответов


502

Вы пропустили ; или + и {}:

find . -exec grep chrome {} \;

или

find . -exec grep chrome {} +

find выполнит grep и заменит {} на найденные имена файлов. Разница между ; и + заключается в том, что с ; выполняется одна команда grep для каждого файла, тогда как с + как можно больше файлов в качестве параметров для + сразу.

ответил bmk 9 Maypm11 2011, 21:39:04
39

Вам вообще не нужно использовать find; grep способен обрабатывать открытие файлов либо из списка всех объектов в текущем каталоге:

grep chrome *

... или даже рекурсивно для папки и всего под ней:

grep chrome . -R
ответил Caleb 9 Maypm11 2011, 21:38:00
13
find . | xargs grep 'chrome'

вы также можете сделать:

find . | xargs grep 'chrome' -ls

Первый показывает вам строки в файлах, второй - только список файлов.

Вариант Калеба более аккуратный, меньше нажатий клавиш.

ответил Mathew 10 Mayam11 2011, 05:20:29
4

Найти - один из способов, и вы можете попробовать the_silver_searcher, тогда все, что вам нужно сделать, это

ag chrome

Он будет искать хром во всех файлах (включая вспомогательные каталоги) и быстрее, чем find

ответил Ask and Learn 31 Mayam16 2016, 03:25:59
1

Чтобы просмотреть список файлов вместо строк:

grep -l "chrome" *

или

grep -r -l "chrome" .
ответил mateusz.szymborski 14 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 14 Sep 2015 18:06:08 +0300 2015, 18:06:08
1

Вот пример того, как обычно я использую find /exec ...

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

Здесь выполняется поиск рекурсивно для всех .py-файлов и для каждого файл распечатает (-ы) имя файла и fgrep для 'hello' on что (для каждого) файла. Результат выглядит (просто побежал один сегодня):

./r1.py
./cgi-bin/tst1.py
print "hello"
./app/__init__.py
./app/views.py
./app/flask1.py
./run.py
./tst2.py
print "hello again"
ответил jon 23 PM00000070000004131 2017, 19:02:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132