Я хочу искать все вхождения <searchterm> на моей машине. Теперь, когда я выполняю поиск, подобный этому
find / <searchterm>
, я вижу все пути, по которым выполняется поиск. Как я могу ограничить результаты моим поисковым сервером?
Абстрактный пример
У меня есть папка, назовем ее my-own-folder. Теперь, когда я хочу знать, есть ли другие папки с тем же именем и запускать поиск для
find / my-own-folder
, на выходе отображается несколько сотен строк, таких как
/var/www/my-own-folder/index.php
/var/www/my-own-folder/lib/1.php
/var/www/my-own-folder/templates/2.php
/var/www/my-own-folder/log/3.log
[d6 ], за которым следуют еще тысячи строк (~ 380 тыс. строк), которые содержат /usr, /lib, /proc, /var и т. д., примеры: /etc/gshadow
/etc/fonts
/dev/ram7
/media/user
/run/udev/watch
/bin/gzexe
/vmlinuz
/lost+found
t содержит my-own-folder. Я очень сомневаюсь, что все они связаны с этой папкой. Итак, почему они выводятся?
Абстрактный пример
Я хочу применить патч для openldap, но не знаю, где я могу найти папку в порядке для запуска патча. Поэтому, когда я ищу
find / openldap
find / slapd
, он выводит все местоположения, где выполняется поиск, а не только вхождения openldap или slapd.
Моя ошибка заключалась в том, чтобы не использовать -name в моем поиске, как это
find / -name "<searchterm>"
Вы можете использовать перенаправление:
find / <searchterm> 2>/dev/null
Это перенаправление всех ошибок на перенаправление .
, например:
# find / -name StewieGriffin\*
/root: Permission denied
/home/peterg: Permission denied
/home/stewie/StewieGriffin-resume.doc
Будет преобразован в
# find / -name StewieGriffin\* 2>/dev/null
/home/stewie/StewieGriffin-resume.doc
. Пожалуйста, просмотрите эту ссылку более подробно.
Как вы обнаружили, -name - это флаг для использования, поскольку он встроен для поиска. Как более универсальное решение, которое будет охватывать вас, когда в других приложениях нет инструмента для оптимизации результатов поиска (например, apt-get), вы можете использовать grep.
find / <searchterm> | grep <searchterm>
Не используйте пробел между / и my-own-folder. Задайте полный путь к папке следующим образом:
# find /var/www/my-own-folder
Это приведет только к выводу содержимого my-own-folder.