使用“查找”实用程序 - 模式错误?

使用“查找”实用程序 - 模式错误?

我一直在尝试使用 bash shell 中的“查找”实用程序在 ./lib/ 中查找特定的共享对象。更具体地说,为了找到这个共享对象,我想找到以“lib”开头的所有文件。例如,这是一个列表。

libpango-1.0.so.0  
libpango-1.0.so.0.3600.8 
libpangocairo-1.0.so.0
libpangocairo-1.0.so.0.3600.8
libpangoft2-1.0.so.0
libpangoft2-1.0.so.0.3600.8
libpangoxft-1.0.so.0
libpangoxft-1.0.so.0.3600.8    

我尝试使用带有模式“lib.*”的 -name 选项,但没有出现我正在寻找的结果。相反,打印了来自不同目录和子目录的多个文件等等。更具体地说,我在终端中输入了以下内容:

find . -name 'lib.*' -print

我到底哪里做错了?我可以做些什么来改善我的模式?

另一方面,我正在使用 bash。

答案1

您尝试在 find 命令中使用正则表达式。要使用正则表达式,您需要参数-regex,或者您可以使用awkfind查找以lib.

find /usr/lib -type f | awk -F'/' '$NF ~ /^lib/'

例子

$ find /usr/lib -type f | awk -F'/' '$NF ~ /^lib/'
/usr/lib/mate-settings-daemon/libhousekeeping.so
/usr/lib/mate-settings-daemon/libkeyboard.so
/usr/lib/mate-settings-daemon/libxrdb.so
/usr/lib/mate-settings-daemon/libbackground.so
/usr/lib/mate-settings-daemon/libkeybindings.so
/usr/lib/mate-settings-daemon/libmedia-keys.so
/usr/lib/mate-settings-daemon/libclipboard.so
/usr/lib/mate-settings-daemon/libmouse.so
/usr/lib/mate-settings-daemon/libmpris.so
/usr/lib/mate-settings-daemon/libxsettings.so
/usr/lib/mate-settings-daemon/liba11y-settings.so
/usr/lib/mate-settings-daemon/liba11y-keyboard.so
/usr/lib/mate-settings-daemon/libsound.so
/usr/lib/mate-settings-daemon/libxrandr.so
/usr/lib/mate-settings-daemon/libtyping-break.so

或者没有正则表达式:

find /usr/lib -type f -name "lib*"

例子

$ find /usr/lib -name "lib*"
/usr/lib/mate-settings-daemon/libhousekeeping.so
/usr/lib/mate-settings-daemon/libkeyboard.so
/usr/lib/mate-settings-daemon/libxrdb.so
/usr/lib/mate-settings-daemon/libbackground.so
/usr/lib/mate-settings-daemon/libkeybindings.so
/usr/lib/mate-settings-daemon/libmedia-keys.so
/usr/lib/mate-settings-daemon/libclipboard.so
/usr/lib/mate-settings-daemon/libmouse.so
/usr/lib/mate-settings-daemon/libmpris.so
/usr/lib/mate-settings-daemon/libxsettings.so
/usr/lib/mate-settings-daemon/liba11y-settings.so
/usr/lib/mate-settings-daemon/liba11y-keyboard.so
/usr/lib/mate-settings-daemon/libsound.so
/usr/lib/mate-settings-daemon/libxrandr.so
/usr/lib/mate-settings-daemon/libtyping-break.so

答案2

如果您想查明是否安装了特定的库,您还可以使用 rpm

rpm -qa | grep lib

安装的软件包通常位于 /usr/lib 或 /usr/lib64 (对于 64 位版本)。所以你也可以这样做

ls /usr/lib | grep lib

或者您正在使用的查找实用程序

find /usr/lib -name "lib*"

相关内容