以不区分大小写的方式查询包数据库的方法?

以不区分大小写的方式查询包数据库的方法?

我有一个文件的名称,我需要确定哪个包提供了它。如果我不需要执行不区分大小写的搜索,那么以下命令就可以正常工作:

dpkg -S filename.txt

如果文件名为“filename.txt”,则此方法有效,但如果文件名为“Filename.txt”,则方法无效。

咨询命令手册dpkg手册页图标没有透露有关该命令不区分大小写的选项的任何信息,我被蒙在鼓里。

有没有办法以不区分大小写的方式查询包数据库中的某个文件?

答案1

dpkg接受通配符模式。如果您不知道文件名是否以大写字母开头,那么这样做没有问题,但这样做不具有可伸缩性。

dpkg -S '[Ff][Ii][Ll][Ee][Nn][Aa][Mm][Ee].[Tt][Xx][Tt]'

无需任何额外的工具,您可以轻松地重现dpkg -S内部操作:

grep -Fi filename.txt /var/lib/dpkg/info/*.list

您可以使用定位 安装 dlocatedpkg -S使用索引来加速(就像locate加速一样find /,但使用 获得的收益远不及dlocate)。由于 是dlocate基于 构建的locate,因此它接受相同的选项,包括-i不区分大小写的搜索。由于dlocate使用索引(通常每晚重建),因此它可能略显过时。

dlocate -i filename.txt

apt 文件 安装 apt-file在所有可供安装的软件包中搜索文件名。它有一个-ui不区分大小写的搜索选项。

apt-file -i search filename.txt

相关内容