Как сделать частичный поиск в Linux с помощью locate? - PullRequest
2 голосов
/ 15 января 2012

Я предпочитаю искать с помощью команды locate, но я не знаю, как выполнить частичный поиск с ее помощью.

Предположим, я хочу найти файл, содержащий слово libevent. Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Найдите поиск по именам файлов. Не содержимое файла.

Уродливый способ - использовать grep. Поиск начнется из каталога /.

grep -irn 'libevent' /

Лучший способ - сузить подозрительные каталоги, в которых могут существовать эти файлы. Предположим, что полные пути этих каталогов: /path/to/dir1, /path/to/dir2 и т. Д. Затем вызовите следующую команду.

for dir in /path/to/dir1 /path/to/dir2
do 
     grep -irn 'libevent' $dir
done
0 голосов
/ 15 января 2012

Команда locate не выполняет поиск в содержимом файлов, как grep (и другие команды). Это просто поиск внутри путей к файлам.

locate работает с использованием кеш-индекса путей к файлам, и этот индекс часто обновляется утилитой updatedb.

добавления

Полезный способ поиска некоторого шаблона внутри (содержимого) некоторых файлов заключается в использовании способности zsh или некоторых последних версий bash для расширения шаблона файла **, например, например.

grep foo ~/gee/**/*.[ch]

с zsh этот поиск во всех файлах с именами *.c или *.h в $HOME/gee/, содержащих foo. Я нахожу эту функцию чрезвычайно полезной и оправдываю только принятие zsh в качестве моей интерактивной оболочки. С другими оболочками вы можете набрать намного длиннее

find $HOME/gee -name '*.ch' | xargs grep foo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...