从搜索整个系统中排除目录[重复]

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。

【讨论】:

以上是关于从搜索整个系统中排除目录[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从find linux中排除目录[重复]

从 grep 中排除 .svn 目录 [重复]

如何在使用 SQL 的重复搜索中排除其他值中的值

我需要从角度应用程序的特定路径中排除样式表 [重复]

从颤振中排除 Web 部件 [重复]

sql 2008 查询排除 某一列的数据