Я хочу искать все происшествия <searchterm>
на моей машине. Теперь, когда я выполняю поиск как это
find / <searchterm>
Я вижу все пути, которые пробегает поиск. Как я могу ограничить результаты своим 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
сопровождаемый другим тысячи строк (~380k строки), которые содержат /usr
, /lib
, /proc
, /var
и так далее, примеры:
/etc/gshadow
/etc/fonts
/dev/ram7
/media/user
/run/udev/watch
/bin/gzexe
/vmlinuz
/lost+found
И строки не содержат my-own-folder
. Я высоко сомневаюсь, что они все подключены к той папке. Итак, почему они производятся?
Точный пример
Я хочу применить патч для openldap, но не знаю, где я могу найти папку для выполнения патча. Таким образом, когда я ищу
find / openldap
find / slapd
это, кажется, производит все местоположения, где поиск выполняется, и не только происшествия openldap
или slapd
.
Мой отказ не должен был использовать -name
в моем поиске как это
find / -name "<searchterm>"
Для ограничения суммы вывода, можно использовать или head
или tail
, чтобы читать или сначала или продлиться x количество условий. Например,
$ find . -iname "*test*" | head -n 10
find: `./.cache/dconf'./xterm-297/tektests
./xterm-297/tektests/imtesth.tek
./xterm-297/tektests/fotest.tek
./xterm-297/tektests/aitest.tek
./xterm-297/tektests/imtest.tek
./xterm-297/testxmc.c
./xterm-297/Tests
./xterm-297/vttests
./test.c
: Permission denied./file2.test
можно также использовать less
для просмотра вывода удобно со страницей / вниз кнопки.
find / -type d -name "foldername" | less
можно также использовать ! -path
для сообщения, находят для игнорирования некоторой определенной папки
find . ! -path /somedirectory/anotherdirectory -iname "searchterm"
из использования grep -v termyoudontwant
. флаг-v позволяет игнорировать материал, что Вы не хотите видеть в выводе
find . -name "searchterm" | grep -v idontwantthatstuff
'
, Находят, позволяет определять, какой тип делают Вы хотите искать. Если Вы хотите искать папки, тип является d. Для поиска всех папок в системе, названной test
, выполните это:
find / -type d -name "test"
Вот конкретный пример для поиска точного каталога в моей системе:
$ sudo find / -type d -name "bin"
/home/xieerqi/bin
/usr/lib/initramfs-tools/bin
/usr/lib/klibc/bin
/usr/lib/pm-utils/bin
/usr/lib/2013.com.canonical.certification:checkbox/bin
/usr/lib/i386-linux-gnu/qt4/bin
/usr/lib/ure/bin
/usr/lib/2013.com.canonical.certification:plainbox-resources/bin
/usr/lib/python3/dist-packages/plainbox/impl/providers/stubbox/bin
/usr/lib/guile-2.0/bin
/usr/share/qt4/bin
/usr/share/libreoffice/bin
/usr/src/linux-headers-3.16.0-30/tools/testing/selftests/rcutorture/bin
/usr/local/bin
/usr/bin
/bin
, Если я хочу проигнорировать эти /usr/
записи, я выполняю это:
$ sudo find / -type d -name "bin" | grep -v '\/usr\/*'
/home/xieerqi/bin
/bin
Для игнорирования каталогов,/usr, / lib,/proc, / var, изменяют grep как это
grep -v '\/usr\/*\|\/lib\/*\|\/proc\/*\|\/var\/*'
Можно использовать перенаправление :
find / <searchterm> 2>/dev/null
Это перенаправление все ошибки к пустое устройство/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
, возьмите больше взгляда на этот ссылка .
Когда Вы обнаружили, - имя является флагом для использования, поскольку это встроено к , находят . Как решение более общего назначения, которое покроет Вас, когда другие приложения не будут иметь инструмента для рационализирования результатов поиска (склонный - добираются, например) можно использовать grep.
find / <searchterm> | grep <searchterm>
Не используйте blankspace между /
и my-own-folder
. Установите полный путь к папке как это:
# find /var/www/my-own-folder
Это только произведет содержание my-own-folder
.