查找除目录之外的所有内容

查找除目录之外的所有内容

如何在查找执行期间忽略目录?例如有以下内容:

.
├── fold
│   └── something
└── something

折叠/某物- 目录 。/某物- 文件

我愿意find . -name "something"并且我不会忽视折叠/某物因为这是目录

答案1

您测试带有-type d.你用 反转了测试的意义!

所以:

find . -name something ! -type d

这将找到something当前目录中或当前目录下调用的所有内容,但不会报告任何内容目录something.

如果您想./fold/something具体忽略,请使用否定-path测试:

find . -name something ! -path ./fold/something

请注意,您在测试中使用的路径名-path应与顶级搜索路径 ( .) 中的完整路径匹配。

如果您想停止find报告任何名为 的目录something,并阻止它进入这些目录,请使用-prune

find . \
    -name something -type d -prune -o \
    -name something -print

或者,等价地,

find . -name something \( -type d -prune -o -print \)

这将首先修剪something从搜索树调用的任何找到的目录。如果当前检查的路径不是名为 的目录something,而是名为 的其他目录something,则打印该路径。这不会找到任何something在 下调用的内容./fold/something,无论其文件类型如何(因为它./fold/something已从搜索树中删除)。

相关内容