我一直在尝试使用 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
,或者您可以使用awk
和find
查找以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*"