Tim*_*Tim 52 command-line files
我想知道如何将“定位”的搜索范围限制到某个目录?
例如,如何在某个目录“/home/tim/science/”下查找名称中带有字符串“math”的文件/目录?
感谢致敬!
Pet*_*r.O 34
更新:关于使用 locate 的regex 选项与 shell 的文件名扩展相对于 locate 的 args 的说明...
SHELL FILENAME EXPANSION
当您键入时locate /bin/b*(注意没有引号),会发生几件事情。
locate尽可能多的单个命令行参数。 locate 然后针对其数据库中的每个文件测试这些参数中的每一个,并输出匹配项。 但是请注意,'locate' 没有当前工作目录的概念。它仅将您的 args与其数据库中的完全限定文件名相匹配。
这意味着它会匹配两者,/bin/bash 并且 /home/user/bin/brackets
您可以通过这种方式进行某种程度的控制,但是 locate 的正则表达式搜索提供更多;和其他一些 locate 选项一样。
LOCATE'S REGEX OPTION
当你输入locate -r "/bin/b.*"不同的东西而不是简单的 args..(shell-expanded-args 只是一个简单的 args 列表)
-r选项告诉locate将您的 arg 视为正则表达式模式。 locate -r "^/bin/b.*"产生以/bin/b ... eg2开头的文件名。locate -r ~/"bin/b.*"产生开头的文件名/ home / user中/斌/ B ..请注意,在〜/是不是由“引用的标志”保护,因此受外壳波浪线扩展它转换〜/到/ home / user中/ 总结:“shell 文件名扩展”与“regex”完全不同
现在回到原来的帖子:
locate 通常将整个数据库列出到标准输出,因此要将其限制在特定目录中,您需要对其进行过滤...您可以通过 locate 的选项来执行此操作。
您可以使用 locate 的正则表达式功能,而不仅仅是 shell-globbing ...(locate /dir/myfile* 是 shell-globbing)...
从信息定位:-r,--regex
注意: -i = 忽略大小写
。. . . . -r = 正则表达式
。. . . . ~/ 将被 shell 扩展为 /home/user (当 ~/ 不在引号中时)
。. . . . '\ '(baskslash+space;没有引号)是一个文字空间(为了避免 shell 扩展)。您可以将字符串放在引号中,但一定要将~/放在引号之外:~/my\ regex或-/"my regex"
例如。locate -ir ~/".*"la\ bella\ vita是一样的locate -ir ~/".*la bella vita",而且会搜索你的整个主目录为“美丽的公主生活”中任何地方出现。
您还可以将搜索限制为仅文件名,但使用-b或--basename.. 在这种情况下,正则表达式行首^仅适用于基本名称...
我最常发现自己使用 locate -bir
PS..Locate太快了,我从来没有用过find......我也没有用过鹦鹉螺搜索(太慢了)
使用'locate',如果您正在查找新添加的内容,只需运行sudo updatedb以刷新locate 的数据库...(但如果您是新添加的,您可能知道它在哪里:)....
Ada*_*tek 17
通过 grep 管道它,像这样
$ locate less | grep ^/bin
/bin/bzless
/bin/less
/bin/lessecho
/bin/lessfile
/bin/lesskey
/bin/lesspipe
/bin/zless
Run Code Online (Sandbox Code Playgroud)
编辑:另一个答案更好,我不知道你可以通过一个模式来定位。
您可以使用locate /rootpath/*filenamespec。我以前没有尝试过,但它似乎有效。做你的例子,这将是locate /home/tim/science/*math*
您可能想要查看find命令而不是locate那种行为。语法是find rootforsearch -name filenamepattern -print. 在这种情况下,您的示例将需要find /home/tim/science -name *math* -print. 不像 locate 那样快,因为没有要搜索的数据库……它实际上是在搜索文件系统。如果您打算对文件进行实际操作,除了打印之外,您还可以使用许多选项。
| 归档时间: |
|
| 查看次数: |
52576 次 |
| 最近记录: |