使用 -prune 选项时如何递归查找子目录

使用 -prune 选项时如何递归查找子目录

我看到find命令确实不是当您使用该-prune选项时,下降到子目录。我如何告诉 find 递归到子目录,但也忽略一些东西?

具体来说,我想搜索/var/lib/foo目录,但排除任何名为 的目录.snapshot/

sudo find /var/lib/foo -prune -name '.snapshot'

通过上述内容,它正确地忽略 .snapshot,但不会进入子目录。仅供参考,我正在 CentOS 6.3 主机上的 bash 中工作。

答案1

你需要做:

sudo find /var/lib/foo -name '.snapshot' -prune -o -print

它将打印任何未命名为“.snapshot”的内容,如果“.snapshot”是一个目录,它也不会进入其中。

为什么 ?因为“-prune”是一个操作(因为“-print”也是另一个操作),所以除了防止在子目录中进一步向下移动之外什么也不做。它总是返回“true”,所以在这里,( -name ... -prune ) 当且仅当文件或目录名为“...”时才为 true,并且您想要其他所有内容,因此 -o ( -打印 )。

相关内容