Linux + найти слово в файле в каталоге, но быстро - PullRequest
2 голосов
/ 03 июня 2010

У меня есть следующая команда

find /var  -type f -exec grep "param1" {} \; -print

С помощью этой команды я могу найти строку param1 в любом файле в / var

, но это занимает очень много времени.

Мне нужна другая возможность найти строку в файле, но гораздо быстрее, чем мой пример

THX

yael

Ответы [ 6 ]

12 голосов
/ 03 июня 2010
grep -r "string"

Находка не обязательна.

Это хорошая ссылка, хотя и устарела.

текст ссылки

Также я думаю, что это относится к superuser.com

2 голосов
/ 03 июня 2010

Посмотрите опцию -l команды grep для увеличения скорости. Для ускорения команды поиска используйте:

find ... -exec sh -c '...' arg0 '{}' +


# grep ... -l: print files with matches, but stop scanning the file on the first match
grep -lsr "param1" /var

find /var -type f -exec sh -c 'grep -ls "param1" "$@"' arg0 '{}' +
find /var -type f -exec sh -c 'grep -ls "$0" "$@"' "param1" '{}' +
1 голос
/ 03 июня 2010

Вы можете использовать индекс locate (если вы не зависите от файлов, которые добавлены / удалены)

grep "param1" $(locate -r '^/var')
1 голос
/ 03 июня 2010

Попробуйте также использовать ack, который в большинстве случаев " лучше, чем grep ". Среди его возможностей - возможность игнорировать типичные файлы мусора по умолчанию (например, каталоги .svn или .git, дампы ядра, файлы резервных копий), возможность использовать большой набор предопределенных классов файлов, хорошее форматирование вывода.

1 голос
/ 03 июня 2010
find /var -type f  | xargs grep "param1" 

будет немного быстрее (процесс не будет порождаться для каждого файла)

grep -r "param1" /var 

будет немного больше, я думаю.

0 голосов
/ 31 мая 2012

некоторые из этих командных оптимизаций полезны, но самый большой скачок в скорости, который я получил от поиска 2 миллионов файлов, заключался в использовании жесткого диска SSD. Те же запросы занимали 1/5 времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...