上一篇 下一篇 分享链接 返回 返回顶部

在Linux系统服务器中查找文件时如何排除目录

发布人:Minchunlin 发布时间:2021-01-28 13:50 阅读量:1397

我们在Linux系统服务器中通常使用find命令命令行搜索文件或文件夹。它是一个复杂的命令,有大量的选项、参数和模式。

find命令最常见的用法是使用正则表达式或完整的文件名来搜索文件。

例如,要搜索名字以'file_'开头的文件,我们可以运行。

$ find . -name 'file_*'

如上所述,它输出的是搜索返回的文件的完整路径。这里的'.'意味着当前目录。Find将搜索当前目录中的文件名模式,所有子目录,以此类推,直到文件结构的最深处。同样,你也可以用任何其他目录来代替'.'。

搜索文件时排除一个目录

现在,在某些情况下,当用户确定某个或某些文件夹不包含要搜索的文件时,可能会出现这种情况。因此,最好的办法是将这些文件夹从搜索中排除,这样命令就能更快地返回结果。

要从搜索中排除一个目录,使用'-prune'参数。

$ find . -name './test' -prune -o -name 'file_*'。

我们先来分析一下这里发生了什么。

"-name './test' -prune "这部分暗示:将'test'这个文件夹排除在搜索范围之外。之后,"-o "告诉命令:命令排除'test'后,还应该做什么。我们只需在这里传递前面例子中描述的模式。

现在,这个模式将在除'test'以外的所有文件夹上运行。

现在你可以看到,搜索确实排除了 "test "文件夹。但是,文件夹名称本身却被打印出来了。

从查找输出中排除一个目录名

要避免这种情况,只需在末尾添加'-print'即可。这个选项将把目录名从输出中排除。

$ find . -name './test' -prune -o -name 'file_*' -print

现在,该模式已经在当前目录中查找文件,并排除了 "test "目录。

在这篇文章中,我们已经看到了如何在使用find命令搜索文件时排除一个目录。请注意,本文给出的例子是基于文件名('-name')搜索文件。在find命令中还有很多其他的方法来搜索文件。

目录结构
全文