如何高效地查找(不)包含某个文件的目录

问题描述 投票:0回答:1

我需要列出包含 CACHEDIR.TAG 文件的所有目录,或列出所有不包含的目录。到目前为止,我想出了

find ~ -type d -exec test -f {}/CACHEDIR.TAG ';' -print

find ~ -type d -exec test -f {}/CACHEDIR.TAG ';' -prune -o -type d -print

但是,

test -f ...
感觉有点麻烦,并且调用每个目录会导致速度非常慢。例如,在我的测试目录上需要 30 多秒,而普通的
find ~ -type d
需要不到 1 秒(在所有内容都缓存到内存中后进行测试)。

有人知道更好/更快的解决方案吗?

shell directory find-util
1个回答
1
投票

您可以分步骤进行:

find ~ -type f -name CACHEDIR.TAG | sed -e 's/.CACHEDIR.TAG$//' a
find ~ -type d > b
grep -v -F -f a -x b
© www.soinside.com 2019 - 2024. All rights reserved.