Linux 使用find命令时如何不查找某个目录

假设现有目录结构如下:

.
├── dir1
│   ├── dir2
│   │   └── dir3
│   │       └── file2
│   └── file1
├── dir4
│   └── file3
└── dir5
    └── dir6
        ├── dir4
        │   └── file4
        └── file4
7 directories, 5 files

下面示例中,我们使用查找'-prune'选项来排除位于当前工作目录中的dir4目录

$find . -path ./dir4 -prune -o -print
.
./dir1
./dir1/dir2
./dir1/dir2/dir3
./dir1/dir2/dir3/file2
./dir1/file1
./dir5
./dir5/dir6
./dir5/dir6/file4
./dir5/dir6/dir4
./dir5/dir6/dir4/file4

目录树包含两个名为dir4的目录。
但是,上面的命令仅排除了我们当前工作目录中的单个目录。

以下Linux命令将仅列出目录类型,可用于排除两个dir4目录:

$find . -type d \( ! -name dir4 \) -print
.
./dir1
./dir1/dir2
./dir1/dir2/dir3
./dir5
./dir5/dir6

下面的示例演示了如何将所有找到的文件复制到/tmp目录:

$ find . -type f -not -path "./dir1/*" -not -path "./dir4/*" -exec cp '{}' /tmp \;
日期:2020-07-07 20:56:46 来源:oir作者:oir