Как найти подкаталог с именем "qt5 / plugins"

Мне нужно найти каталог подключаемых модулей Qt, и я потратил час на поиски пути чтобы найти имена каталогов, содержащие /. Существует масса «qt», и если «qt / plugins» неверен, мне понадобится другой формат, поэтому мне нужно общее решение для поиска имени каталога, включая /.

Например, bin / yelp существует на моем компьютере (который я использую в качестве теста), и ни один из синтаксисов команд, которые я нашел с помощью Google, этого не обнаружит.

Обычно я бы просто придумал что-то вроде этого, но я потратил на это больше часа.

1
задан 2 September 2021 в 21:54

2 ответа

Команда 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 обновляет его.

0
ответ дан 4 September 2021 в 09:24

Вы можете использовать команду find - используя предикат -path вместо обычного -name (который никогда не может соответствовать шаблону, содержащему / разделитель путей). Например:

find / -path '*/qt/plugins' 2>/dev/null

Ведущее */ необходимо, потому что -path совпадает с целым путем.

Можно также использовать find / -regex '.*/qt/plugins' 2>/dev/null (опять же, поиск по всему пути, с .* вместо * подстановочного знака shell glob), однако регулярное выражение не имеет преимуществ для такого простого шаблона.

2
ответ дан 4 September 2021 в 09:24

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

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