我在 Ubuntu 11.04 上,我有:
$ locate --version
mlocate 0.23.1 [...]
Run Code Online (Sandbox Code Playgroud)
该man locate
页面说:
如果未指定 --regex,则 PATTERN 可以包含通配符。如果任何 PATTERN 不包含通配符,则 locate 的行为就像模式是 *PATTERN* 一样。
好的,所以做一个小测试:首先,只搜索 'lua' 工作 - 但返回一吨(500+)的结果:
$ locate 'lua' | head -5
/boot/grub/hwmatch.lua
/etc/alternatives/lua-compiler
/etc/alternatives/lua-compiler-manual
/etc/alternatives/lua-interpreter
/etc/alternatives/lua-manual
$ locate 'lua' | wc -l
560
Run Code Online (Sandbox Code Playgroud)
我想搜索.so
文件lua
名中的文件,所以我尝试使用通配符模式:
$ locate 'lua*so*'
Run Code Online (Sandbox Code Playgroud)
没有,0 个结果。所以我正在尝试使用正则表达式:
$ locate --regex 'lua.*so.*' | head -5
/usr/lib/libipelua.so.7.0.10
/usr/lib/liblua5.1.so
/usr/lib/liblua5.1.so.0
/usr/lib/liblua5.1.so.0.0.0
/usr/lib/gtk-2.0/2.10.0/engines/libluaengine.so
Run Code Online (Sandbox Code Playgroud)
嗯,这是有效的 - 所以它已经足够好了。
但是让我感到困惑的是 - 如果手册页说在不使用正则表达式时支持通配符,我应该如何格式化我的通配符模式以使其工作?