1

我在我的机器上使用 Fedora 15。实际上,我正在尝试apache-tomcat-7.0.37通过在整个文件系统中搜索来找到具有名称的文件夹

实际上我在路径中有一些像下面这样的文件夹/opt/tomcat/

apache-tomcat-7.0.37
apache-tomcat-6.0.34
apache-tomcat-7.0.67
.........

还有一些文件夹在/usr/share/tomcat/

apache-tomcat-4.0.7
apache-tomcat-6.0.4
apache-tomcat-8.0.6
.........

所以我想要的是使用命令从 linux 终端定位/查找/搜索所有这些文件夹路径。

我用谷歌搜索了很多,得到了一些命令locatefind如下所示

find / -name apache-tomcat*
locate apache-tomcat 

上面的命令列出了所有文件夹,包括额外不需要的文件夹信息,所以实际上我想要的是,只需要搜索名称为apache-tomcat-x.x.x,apache-tomcat-xx.xx.xx

在文件夹名称中,起始词apache-tomcat相同,只有整数部分 ( version number) 发生变化。所以我想找到所有具有不同版本号的文件夹,比如使用正则表达式代替整数来查找文件夹

所以任何人都可以让我知道如何使用带有正则表达式的命令或类似的命令来搜索上述场景的文件夹,这些命令可以找到所有具有名称的文件夹apache-tomcat-xx.x.xxx.....

4

2 回答 2

3

这应该找到所有具有模式 apache-tomcat-XYZ 的文件、目录、链接等,其中 X、Y 和 Z 是整数。

find . -regextype sed -regex ".*/apache-tomcat-[0-9]\+\.[0-9]\+\.[0-9]\+"

如果您只查找目录,请使用此变体:

find . -type d -regextype sed -regex ".*/apache-tomcat-[0-9]\+\.[0-9]\+\.[0-9]\+"

如果要从 / 开始搜索整个系统,请使用以下变体:

find / -type d -regextype sed -regex ".*/apache-tomcat-[0-9]\+\.[0-9]\+\.[0-9]\+"
于 2013-02-27T05:56:45.060 回答
2

您可以提供合适的正则表达式来locate快速搜索整个系统:

locate -b --regex "apache-tomcat-[0-9]+.[0-9]+.[0-9]+$"

与 的任何使用一样locate,它使用的文件数据库需要是最新的。如果你有足够的权限,你可以sudo updatedb强制更新。

于 2013-02-27T06:01:54.057 回答