在Linux系统服务器中查找文件时如何排除目录
我们在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命令中还有很多其他的方法来搜索文件。