如何在查找执行期间忽略目录?例如有以下内容:
.
├── 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
已从搜索树中删除)。