Как пользоваться найти тихо?

Я хочу искать все вхождения <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>"
1
задан 22 June 2015 в 10:11

3 ответа

Вы можете использовать перенаправление:

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

. Пожалуйста, просмотрите эту ссылку более подробно.

2
ответ дан 23 May 2018 в 19:45
  • 1
    Все еще показывает мне сотни строк, которые, похоже, не связаны с моим поиском (см. Добавленный пример в моем вопросе) – Gottlieb Notschnabel 17 June 2015 в 09:54
  • 2
    Не использовал -name "" (см. Мое обновление вопроса), спасибо за вашу помощь! – Gottlieb Notschnabel 17 June 2015 в 10:19

Как вы обнаружили, -name - это флаг для использования, поскольку он встроен для поиска. Как более универсальное решение, которое будет охватывать вас, когда в других приложениях нет инструмента для оптимизации результатов поиска (например, apt-get), вы можете использовать grep.

find / <searchterm> | grep <searchterm>
1
ответ дан 23 May 2018 в 19:45

Не используйте пробел между / и my-own-folder. Задайте полный путь к папке следующим образом:

# find /var/www/my-own-folder

Это приведет только к выводу содержимого my-own-folder.

0
ответ дан 23 May 2018 в 19:45
  • 1
    Я думал, что первое утверждение после find - это место для начала поиска? – Gottlieb Notschnabel 17 June 2015 в 09:57
  • 2
    @gottliebNotschnabel технически, если вы хотите искать только одну конкретную папку, это то, что вы указываете в пути. Поэтому, если я хочу искать все в папке /home/myusername/bin, я бы запустил find /home/myusername/bin -name "searchterm". Сканирование поиска для поиска из / означает поиск всей системы, всех папок – Sergiy Kolodyazhnyy 17 June 2015 в 09:59
  • 3
    О, хорошо, непонимание: я не ищу контент этого пути, но для всех вхождений my-own-folder в системе. – Gottlieb Notschnabel 17 June 2015 в 10:02
  • 4
    @GottliebNotschnabel, так дайте мне понять это. Вы просто хотите узнать все вхождения вашей папки . Только папка, нет файлов, ничего больше. Правильно ? Какие еще вещи вы не хотите в поиске? Я собираюсь обновить свой ответ через секунду, см. – Sergiy Kolodyazhnyy 17 June 2015 в 10:04
  • 5
    В принципе, я хочу найти все вхождения searchterm, а не только папки. Я добавил конкретный пример моего вопроса, чтобы указать – Gottlieb Notschnabel 17 June 2015 в 10:10

Другие вопросы по тегам:

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