我需要备份我们服务器的所有目录层次结构,因此我需要列出服务器中某些目录的所有子目录。
问题是其中一个子目录包含数以万计的子目录(仅包含子目录名称的文件可能需要数百兆字节,并且相应的 find 命令需要很长时间)。
例如,如果我有一个目录 A 和一个子目录 A/a,其中包含上万个子目录,我想使用 find 命令列出 A 的所有子目录,不包括A/a 的所有子目录,但是不排除 A/a 本身。
我使用这个问题中的答案尝试了 -prune 的许多变体,但无济于事。
有没有办法find
在 UNIX 中使用该命令来执行此操作?
更新:
@devnull 的回答效果很好,但现在我遇到了另一个问题,所以我会稍微改进一下我的问题:
我使用了以下命令:
find /var/www -type d \( ! -wholename "/var/www/web-release-data/*" ! -wholename "/var/www/web-development-data/*" \)
出现的新问题是 find 由于某种原因仍在遍历 and 的整个目录树"/var/www/web-release-data/"
,"/var/www/web-development-data/"
因此它非常慢,我担心它可能需要几个小时。
有什么办法让 find 完全排除这些目录而不遍历它们各自的目录层次结构?