如何在 Linux 中从 Find 命令搜索中排除目录
在本文中,我们将深入研究在 Linux 中从 find
命令搜索中显式排除目录的方法。 find
命令是一个功能强大的实用程序,用于在目录层次结构中搜索文件和目录。但是,在某些情况下,您可能希望从搜索中排除某些目录,以加快过程或避免出现不相关的结果。我们将探索不同的选项并提供使用沙箱目录结构的实际示例。
在本教程中您将学习:
- 如何使用
-prune
选项排除目录 - 将
-prune
与其他find
选项相结合 - 使用多个
-prune
选项进行复杂的排除 - 如何使用路径名排除目录
- 根据模式排除目录
- 逻辑运算符的高级用法
- 具有不同排除需求的现实示例
- 了解排除对性能的影响
从 Find 命令的搜索中排除目录
使用 find
命令时,您可能需要从搜索结果中排除特定目录。当处理大型目录结构或当您想要专注于文件系统的特定区域时,这尤其有用。以下是实现此目的的一些方法,并通过基于以下沙箱结构的示例进行了说明:
.
├── dir1
│ ├── dir2
│ │ └── dir3
│ │ └── file2
│ └── file1
├── dir4
│ └── file3
└── dir5
└── dir6
├── dir4
│ └── file4
└── file4
使用 -prune 排除目录:
-prune
选项可用于从搜索中排除目录及其内容。find . -path "./dir1" -prune -o -print
此命令将从搜索结果中排除
dir1
及其内容。-path
选项指定要排除的目录,-prune
选项防止find
下降到该目录。-o
(OR) 运算符允许在其他目录中继续搜索,-print
显示结果。排除多个目录:您可以通过组合多个
-prune
选项来排除多个目录。find . -path "./dir1" -prune -o -path "./dir5" -prune -o -print
此命令从搜索结果中排除
dir1
和dir5
。按名称模式排除目录:使用
-name
选项排除与特定模式匹配的目录。find . -name "dir4" -prune -o -print
此命令从搜索结果中排除所有名为
dir4
的目录。将 -prune 与其他查找选项结合使用:您可以将
-prune
与其他find
选项结合使用以优化搜索。find . -path "./dir1" -prune -o -type f -name "*.txt" -print
使用复杂模式排除目录:使用选项组合进行更复杂的排除。
find . \( -path "./dir1" -o -path "./dir5" \) -prune -o -type f -print
使用 -not 选项:
-not
选项也可用于排除。find . -not -path "./dir1/*" -print
根据深度排除目录:控制搜索深度以排除更深的目录。
find . -maxdepth 2 -path "./dir1/dir2" -prune -o -print
逻辑运算符的高级用法:组合逻辑运算符进行高级排除。
find . -path "./dir1" -prune -o -type f \( -name "*.sh" -o -name "*.py" \) -print
此命令排除 dir1
并搜索其他目录中的 .txt
文件。
此命令排除 dir1
和 dir5
并列出其他目录中的所有文件。
此命令排除 dir1
下的所有文件和目录。数据保险丝=“22189504506”>
如果深度大于 2,此命令会排除 dir1
内的 dir2
。
此命令排除 dir1
并搜索其他目录中的 .sh
和 .py
文件。
结论
从 find
命令的搜索中排除目录可以显着简化文件搜索并提高效率。通过理解和利用 -prune
、-path
和逻辑运算符等选项,您可以定制搜索以满足特定需求并避免不相关的结果。使用提供的示例进行练习,并使它们适应您自己的目录结构和搜索要求。