我想查找当前文件夹中的所有目录和子目录,不包括那些隐藏的(或属于隐藏的)。以下不起作用:
find . -type d -name "[!.]*"
因为我认为它只会避免空的隐藏文件夹。这样的东西是匹配的
./.cache/totem
我假设您将以点开头的目录分类为“隐藏”。为避免进入此类目录,您应该使用-prune
.
find . -mindepth 1 -type d \( -name '.*' -prune -o -print \)
这从当前目录开始(我们可以在*
此处指定,但前提是您的通配符未设置为包含点文件/目录 - 例如bash
's dotglob
)。然后它只匹配目录,而不考虑.
自身。括号中的部分告诉您find
,如果名称匹配,.*
则将其修剪掉,这样就不会再考虑该名称及其后代了。否则打印其名称。
如果您没有(非 POSIX)-mindepth
选项,则可以使用此替代方法。可以说这比我建议的原始解决方案更好,但我将两者都留在答案中
find . -type d \( -name '.?*' -prune -o -print \)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句