【问题标题】: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.comunix.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/' 视为相同,我认为第一个将匹配那个时候的路径。

标签: linux find rhel


【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2018-05-09
    • 1970-01-01
    相关资源
    最近更新 更多