尝试使用locate命令来查找给定模式的完全匹配项。但是结果显示所有匹配的文件..
例如:我想找到一个名为:node的二进制文件
但它给了我包含这个词的所有匹配项:
server2# locate node
/usr/share/man/man9/getnewvnode.9.gz
/usr/share/man/man9/ieee80211_amrr_node_init.9.gz
/usr/share/man/man9/ieee80211_dump_node.9.gz
/usr/share/man/man9/ieee80211_dump_nodes.9.gz
/usr/share/man/man9/ieee80211_find_rxnode.9.gz
/usr/share/man/man9/ieee80211_find_rxnode_withkey.9.gz
/usr/share/man/man9/ieee80211_free_node.9.gz
Run Code Online (Sandbox Code Playgroud) 从“托盘图标”中,我选择禁用“启动时启动 Teams”,但现在我找不到该应用程序。
它不在“程序文件”>“Microsoft”中 [也不在“程序文件 (x86)”中]。
它不在当前用户的应用程序数据中。
它不在“开始”菜单中(也不通过它进行搜索)。
它在哪里?
locate "*.png".png按预期返回所有以 结尾的文件。
locate "test.*"不返回任何内容,但test在我的系统中有命名的文件。
locate "*test"test按预期返回所有以 结尾的文件。
locate "test*"不返回任何内容,但test在我的系统中有以 开头的文件。
为什么通配符似乎只适用于“以”结尾?
(慢)Linux“find”命令有一个选项“-ls”,可以像“ls -l”命令一样显示大小、日期等。但是“locate”命令似乎没有。那么我怎样才能获得与 locate 相同的功能呢?
我使用反引号将 locate 的输出传递给 ls,如下所示:
ls -al `locate -e somefile`
Run Code Online (Sandbox Code Playgroud)
...只要 somefile 存在,它就可以工作。但是如果 somefile 不存在,它会给我一个完整的目录列表。
如果我这样做:
ls -al `locate -e somefile` thisfileneverexists
Run Code Online (Sandbox Code Playgroud)
...然后它有点工作,如果你不介意错误行:
ls: cannot access thisfileneverexists: No such file or directory
Run Code Online (Sandbox Code Playgroud)
……这让我们想到了明显但极其丑陋的解决方法:
ls -al `locate -e somefile` thisfileneverexists 2>/dev/nul
Run Code Online (Sandbox Code Playgroud)
那行得通,但肯定有更好的方法!
我一直在尝试更新 locate 在我的 Macbook(10.6.3 Snow Leopard)上使用的数据库,但即使按照此线程中显示的命令也没有让我到任何地方。我只是从中得到一个错误 - 如果我尝试通过 sudo 使用它,我会收到一些关于此类目录的权限被拒绝的问题。我尝试以 root 身份运行它(sudo su,然后是命令),但也没有用。退出我的常规终端提示,现在我得到
macbook:~ monte$ sudo /usr/libexec/locate.updatedb
find: .: 权限被拒绝
macbook:~ monte$
我彻底糊涂了,有点害怕我可能在这个过程中弄脏了一些东西。任何帮助或建议将不胜感激!
蒙特
在 OS X 上,我认为 locate DB 是通过运行来填充的:
sudo /usr/libexec/locate.updatedb
Run Code Online (Sandbox Code Playgroud)
但是 locate 似乎没有在 ~/
默认情况下,locate.updatedb 应该索引我的主文件夹吗?如果是这样,任何建议或想法为什么不是?如果默认情况下它不索引 ~/ ,是否有任何理由不索引此文件夹层次结构?如果没有,我该如何配置它?
此外,当我从 ~/ (作为非 root 用户)运行 locate.updatedb 时,它可以工作。当我从下面的任何内容(例如,~/Desktop/)运行它时,我收到以下错误:
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
find: .: Permission denied
Run Code Online (Sandbox Code Playgroud) linux locate 命令非常适合快速查找文件。
我的问题:我们如何使用 locate 命令以便按日期/时间顺序返回结果?
我有一个带有我的 linux 系统的小型 SSD 磁盘,以及一个包含我大部分工作的大型 IDE 磁盘,它在系统启动时安装。出于某种原因,我似乎无法在 IDE 磁盘上使用locate. 我不知道错误是否在于我没有给出正确的标志,locate或者 IDE 磁盘是否被忽略updatedb(即未编入索引,因此不可搜索)。我怎样才能做到这一点?
如果我转到挂载文件夹并运行,我确实会找到这些文件
$ find . -name "my_pattern"
Run Code Online (Sandbox Code Playgroud)
但它很慢。
locate gmp.h我在提示符下输入并得到以下信息:
/usr/src/linux-headers-3.13.0-24/include/linux/igmp.h
/usr/src/linux-headers-3.13.0-24/include/uapi/linux/igmp.h
/usr/src/linux-headers-3.13.0-24-generic/include/linux/igmp.h
Run Code Online (Sandbox Code Playgroud)
但当我这样做时,ls /usr/include/x86-64-linux-gnu/我看到了这个:
a.out.h asm bits c++ fpu_control.h gmp.h gnu ieee754.h sys
Run Code Online (Sandbox Code Playgroud)
为什么找不到locate定位/usr/include/x86-64-linux-gnu/gmp.h?
编辑:ls -l /usr/include/x64-64-linux-gnu/gmp.h说的是:
ls: cannot access /usr/include/x64-64-linux-gnu/gmp.h: No such file or diretory
Run Code Online (Sandbox Code Playgroud)
为什么说不ls /usr/include/x86-64-linux-gnu/存在却说存在ls -l /usr/include/x64-64-linux-gnu/gmp.h?
截图:

我正在 Mac(Catalina,10.15.7)上工作并且想要使用locate <...>- 命令。输入后,locate ...它向我建议了以下内容,我就这样做了。
WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
Please be aware that the database can take some time to generate; once
the database has been created, this message will no longer appear.
Run Code Online (Sandbox Code Playgroud)
创建数据库后,我想执行locate-命令。这没有按预期工作。相反,出现了这样的情况:
locate: locate database header corrupt, bigram char outside 0, 32-127: -1
Run Code Online (Sandbox Code Playgroud)
我可以做什么来解决这个问题?非常感谢你的帮助。
例如,我不希望任一程序查找以 *.pyc 结尾的文件。我确定我可以使用正则表达式或 glob 以某种方式做到这一点,但是有没有办法让 locate 完全忽略文件?我是否想搜索 pyc 文件是非常值得怀疑的。
我正在运行 Arch Linux 并且经常使用“locate”命令来查找文件。但是,我今天注意到,它会根据项目过去所在的位置而不是当前位置提供结果。我已经清理了垃圾。我想知道是否有需要清除的 locate 缓存。任何帮助,将不胜感激。谢谢你。
在我看来,locate是多的速度比find在查找文件,也更彻底。有什么不同?
locate ×13
linux ×7
macos ×3
command-line ×2
find ×2
ubuntu ×2
unix ×2
coreutils ×1
database ×1
file-search ×1
freebsd ×1
ls ×1
mac ×1
path ×1
terminal.app ×1
wildcards ×1
windows-10 ×1