从搜索整个系统中排除目录[重复]
Posted
技术标签:
【中文标题】从搜索整个系统中排除目录[重复]【英文标题】:Exclude directories from searching entire system [duplicate] 【发布时间】:2014-09-24 17:58:31 【问题描述】:我需要搜索所有具有特定权限的文件,同时排除/
下的两个目录。这些目录包含大量信息,系统会阻塞它们。
我尝试了 -type
-path
-wholename
和 -prune
的各种组合,但似乎无法排除这两个目录。
目前这是我正在尝试的。
find . -path './dir1/' -prune -o -path './dir2/' -prune -o -type d -perm -002 ! -perm -1000 > wwlist
任何帮助将不胜感激。
【问题讨论】:
这个问题属于superuser.com或unix.stackexchange.com。 意味着添加评论以及关闭它。但特别是,您的语法类似于find \( -path './dir1' -o -path './dir2' \) -type d -prune -o -type -d -perm -002 ! -perm -1000 -print > wwlist
。这将在逻辑上被视为 find ((-path './dir1' -o -path './dir2)) AND -type d AND -prune) OR (-type -d AND -perm -002 AND (! -perm -1000) AND -print)
。也不是肯定的,但我相信 find 不会将-path './dir1'
和-path './dir1/'
视为相同,我认为第一个将匹配那个时候的路径。
【参考方案1】:
您可以添加排除目录的条件:
find . '!' -path './dir1/*' '!' -path './dir2/*' ...
更准确地说,还要排除目录本身:
find . '!' -path './dir1' '!' -path './dir2' '!' -path './dir1/*' '!' -path './dir2/*' ...
你也可以使用正则表达式:
find . -regextype posix-extended -not -regex '[.]/dir(1|2)(/.*)?' ...
您也可以使用 -not
代替 !
,但它不符合 POSIX。
-wholename
是 -path
的同义词,但它不符合 POSIX。
【讨论】:
以上是关于从搜索整个系统中排除目录[重复]的主要内容,如果未能解决你的问题,请参考以下文章