Мне нужно найти каталог подключаемых модулей Qt, и я потратил час на поиски пути чтобы найти имена каталогов, содержащие /. Существует масса «qt», и если «qt / plugins» неверен, мне понадобится другой формат, поэтому мне нужно общее решение для поиска имени каталога, включая /.
Например, bin / yelp существует на моем компьютере (который я использую в качестве теста), и ни один из синтаксисов команд, которые я нашел с помощью Google, этого не обнаружит.
Обычно я бы просто придумал что-то вроде этого, но я потратил на это больше часа.
Команда locate
кажется наиболее полезной здесь:
$ locate bin/yelp
/usr/bin/yelp
и
$ locate qt| grep plugins
/usr/lib/x86_64-linux-gnu/qt5/plugins
/usr/lib/x86_64-linux-gnu/qt5/plugins/bearer
/usr/lib/x86_64-linux-gnu/qt5/plugins/egldeviceintegrations
/usr/lib/x86_64-linux-gnu/qt5/plugins/generic
/usr/lib/x86_64-linux-gnu/qt5/plugins/iconengines
/usr/lib/x86_64-linux-gnu/qt5/plugins/imageformats
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms
/usr/lib/x86_64-linux-gnu/qt5/plugins/platformthemes
/usr/lib/x86_64-linux-gnu/qt5/plugins/styles
/usr/lib/x86_64-linux-gnu/qt5/plugins/xcbglintegrations
/usr/lib/x86_64-linux-gnu/qt5/plugins/bearer/libqconnmanbearer.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/bearer/libqgenericbearer.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/bearer/libqnmbearer.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/egldeviceintegrations/libqeglfs-emu-integration.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/egldeviceintegrations/libqeglfs-kms-egldevice-integration.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/egldeviceintegrations/libqeglfs-kms-integration.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/egldeviceintegrations/libqeglfs-x11-integration.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/generic/libqevdevkeyboardplugin.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/generic/libqevdevmouseplugin.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/generic/libqevdevtabletplugin.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/generic/libqevdevtouchplugin.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/generic/libqlibinputplugin.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/generic/libqtuiotouchplugin.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/iconengines/libqsvgicon.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/imageformats/libqgif.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/imageformats/libqico.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/imageformats/libqjpeg.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/imageformats/libqsvg.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqeglfs.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqlinuxfb.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimal.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimalegl.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqoffscreen.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqvnc.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/platformthemes/libqgtk3.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/platformthemes/libqt5ct.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/styles/libqt5ct-style.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/xcbglintegrations/libqxcb-egl-integration.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/xcbglintegrations/libqxcb-glx-integration.so
или, если вы хотите, чтобы она оканчивалась только плагинами:
$ locate qt| grep 'plugins$'
/usr/lib/x86_64-linux-gnu/qt5/plugins
locate
имеет 1 проблему: она основывает свои результаты на базе данных. обслуживает, и эта база данных не работает в режиме реального времени, но она создается время от времени. updatedb
обновляет его.
Вы можете использовать команду find
- используя предикат -path
вместо обычного -name
(который никогда не может соответствовать шаблону, содержащему /
разделитель путей). Например:
find / -path '*/qt/plugins' 2>/dev/null
Ведущее */
необходимо, потому что -path
совпадает с целым путем.
Можно также использовать find / -regex '.*/qt/plugins' 2>/dev/null
(опять же, поиск по всему пути, с .*
вместо *
подстановочного знака shell glob), однако регулярное выражение не имеет преимуществ для такого простого шаблона.