如何有效地查找包含特定文件的目录(而不是)

时间:2012-10-03 09:04:30

标签: shell find directory

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

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秒(在所有内容缓存到内存后进行测试)。

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

1 个答案:

答案 0 :(得分:1)

你可以分步进行:

find ~ -type f -name CACHEDIR.TAG | sed -e 's/.CACHEDIR.TAG$//' a
find ~ -type d > b
grep -v -F -f a -x b