我如何才能限制查找仅搜索特定的子目录?

我如何才能限制查找仅搜索特定的子目录?

我在用寻找在一个猛击脚本。我该如何修改该代码以包含“bin”下的特定目录,即“./bin/php/”(同时仍然忽略“bin”的所有其他子目录)?

当前代码:

find . -name '*.php' \
-and ! -path './bin/*' \

答案1

你是这个意思吗?

find . \( \! -iregex ^./bin/.\* -o -iregex ^./include/something/.\* \) \
    -name \*.php

答案2

find /bin /bin/php -maxdepth 1 -name "*.php"

概念验证

$ 树/bin
/垃圾桶
|-- 灰分
|-- 不要搜索
||-- 隐藏我.php
|`--隐藏我.txt
|-- 杜
|-- 文件.php
|-- 格式化
|-php
| |-- 隐藏我.txt
|`--显示我.php
`-zsh

2 个目录,184 个文件

结果

$ 查找 /bin /bin/php -maxdepth 1 -name "*.php"
/bin/文件.php
/bin/php/show_me.php

请注意/bin/dont_search/hide_me.php不匹配

答案3

尝试这个:

find . ./bin/php -path ./bin -prune -o -print

但这也会忽略 ./bin 内的文件。

顺便说一下,它是“find”而不是“Bash find”。

答案4

GNU 查找

find . -name "*.txt" ! -iregex ".*/bin/.*"

相关内容