【问题标题】:How to find a particular folder through terminal in fedora如何在 Fedora 中通过终端查找特定文件夹
【发布时间】:2013-02-12 00:08:53
【问题描述】:

目前我正在使用 linux(Fedora 15),我正在尝试使用以下命令搜索整个文件系统中的文件夹

find / -name "apache-tomcat*"

上述命令的执行时间越来越长,用户迫不及待,结果如下所示

[root@user fedrik]# find / -name "apache-tomcat*"
find: `/proc/6236/task/6236/ns/net': No such file or directory
find: `/proc/6236/task/6236/ns/uts': No such file or directory
find: `/proc/6236/task/6236/ns/ipc': No such file or directory
find: `/proc/6236/ns/net': No such file or directory
find: `/proc/6236/ns/uts': No such file or directory
find: `/proc/6236/ns/ipc': No such file or directory
find: `/proc/6462/task/6462/ns/net': No such file or directory
.................
................. 

但正如我所提到的,它需要很长时间来处理,有时它会被击中,所以任何人都可以告诉我如何使用来自 linux 终端的命令按名称搜索特定文件夹,这将非常快速并且应该像上面一样在整个文件系统中搜索我使用'/'

编辑

其实我的目的是在整个文件系统中搜索apache-tomcat-7.0.37之类的文件夹,

例如,在文件系统的不同位置上可能有许多文件夹,如 apache-tomcat-6.0.45apache-tomcat-5.1.7apache-tomcat-5.0.37............

所以我们可以观察到只有最后一部分(数字部分)正在改变并且整个文件夹名称相同,所以有没有办法搜索这些类型的文件夹而不管最后一个数字部分,比如使用正则表达式或类似的东西。

最后我的意图是在整个文件系统上找到apache-tomcat-xxxxxxx格式的文件夹,因为如果我们只搜索apache-tomcat,我们会得到数百个结果,有时甚至会得到数千个结果,这很难分析和搜索从他们 ?

【问题讨论】:

  • 如果有某种方法可以过滤输出并删除不需要的结果! (这是讽刺。man grep

标签: linux search terminal command directory


【解决方案1】:
locate apache-tomcat | grep -E '^apache-tomcat-[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$'

或者只使用[0-9] 而不是[[:digit:]]。这可能更具可读性。或者

locate apache-tomcat | perl -ne 'print if /^apache-tomcat-\d+\.\d+\.\d+$/'

无论你做什么,你肯定想使用locate而不是find,因为它会快得多

【讨论】:

  • 我检查了两个命令并返回一个空结果......实际上我在“/opt/tomcat/apache-tomcat-7.0.37”中有那个文件夹。因此,通过运行上述命令得到空结果...
  • 自 opt 中的文件创建以来,您是否运行过upatedblocate 来自一个必须更新的数据库。如果定位正在生成过滤器未捕获的结果,请修复过滤器。
  • 是的,我已经运行了第一个 updatedb 命令,并且在上述两个命令之后但没有工作
【解决方案2】:

试试这个:

locate apache-tomcat

它使用一个数据库(由名字很搞笑的 updatedb 更新,您可以使用 sudo updatedb 运行它来刷新搜索索引)。

【讨论】:

  • 谢谢你的帮助,你能看看我上面编辑的问题吗?
猜你喜欢
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-19
相关资源
最近更新 更多