gpt4 book ai didi

linux - 如何在 unix 中的 find 命令的搜索路径中排除给定目录的所有子目录

转载 作者:IT王子 更新时间:2023-10-29 00:14:43 28 4
gpt4 key购买 nike

我需要备份我们服务器的所有目录层次结构,因此我需要列出服务器中某些目录的所有子目录。

问题是其中一个子目录包含数万个子目录(仅包含子目录名称的文件可能需要数百兆字节,并且相应的查找命令需要很长时间)。

比如我有一个目录A和一个子目录A/a,里面有几万个子目录,我想用find命令列出A的所有子目录不包括 A/a 的所有子目录但不排除 A/a 本身

我使用 this question 中的答案尝试了多种 -prune 变体无济于事。

有没有办法在 UNIX 中使用 find 命令来做到这一点?

更新:

@devnull 的回答非常好,但现在我有另一个问题,所以我会稍微提炼一下我的问题:

我使用了以下命令:

 find /var/www -type d \( ! -wholename "/var/www/web-release-data/*"  ! -wholename "/var/www/web-development-data/*" \)

出现的新问题是find不知为何还在遍历"/var/www/web-release-data/""/var/的整个目录树www/web-development-data/",因此它非常慢,我担心它可能需要几个小时。

有没有办法让 find 完全排除那些目录而不遍历它们各自的目录层次结构

最佳答案

以下应该适合您:

find A -type d \( ! -wholename "A/a/*" \)

这将列出 A 的所有子目录,包括 A/a 但不包括 A/a 的子目录。

例子:

$ mkdir -p A/{a..c}/{1..4}
$ find A -type d \( ! -wholename "A/a/*" \)
A
A/c
A/c/4
A/c/2
A/c/3
A/c/1
A/a
A/b
A/b/4
A/b/2
A/b/3
A/b/1

关于linux - 如何在 unix 中的 find 命令的搜索路径中排除给定目录的所有子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18723126/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com