如何找到正好有 8 层深的文件名?

R G*_*cey 4 find shell-script

我正在使用“查找”命令在备份系统中搜索文件。我想找到所有包含某个字符串(例如“ XYZ ”)且深度正好为 8 级的所有文件名。

是否有一个 find 语法可以做到这一点?非常感谢。

Cel*_*ada 6

假设您使用的是 GNUfind或其他find具有这些选项的工具,

find . -mindepth 8 -maxdepth 8 -name '*XYZ*'
Run Code Online (Sandbox Code Playgroud)

如果你没有这样的find命令,你可以使用这个 POSIX 版本:

# must contain exactly 7 slashes
find . -path '*/*/*/*/*/*/*/*' -prune -name '*XYZ*'
Run Code Online (Sandbox Code Playgroud)

-path '*/*/*/*/*/*/*/*'选择至少 8 层深的路径(至少包含 7 个斜杠,深度 0 是.它本身,深度 1 是当前目录中的文件),-prune为它们做将防止find下降到那些 8 层深的文件夹中,所以9 及以上的将永远不会被看到。