Shell 排除AIX中查找结果中的某些目录

Shell 排除AIX中查找结果中的某些目录,shell,unix,find,ksh,aix,Shell,Unix,Find,Ksh,Aix,我试图搜索所有具有扩展属性(-ea)但路径名中没有特定字符串的目录。我正在努力: find / -ea -type d ! -name '*arcdst*' 但是,这仍然返回/arcdst及其下的所有目录。我已经在这个站点上看到了类似的答案,但是根据AIX手册页-not不可用,is-path。这是AIX6.1TL6 非常感谢,, LarryD您的命令没有查找没有arcdst的完整路径,而是只查找 使用arcdst以外的其他名称的目录。 我希望find能在arcdst目录下找到目录和文件, 但是

我试图搜索所有具有扩展属性(-ea)但路径名中没有特定字符串的目录。我正在努力:

find / -ea -type d ! -name '*arcdst*'
但是,这仍然返回/arcdst及其下的所有目录。我已经在这个站点上看到了类似的答案,但是根据AIX手册页-not不可用,is-path。这是AIX6.1TL6

非常感谢,,
LarryD

您的命令没有查找没有arcdst的完整路径,而是只查找 使用arcdst以外的其他名称的目录。 我希望find能在arcdst目录下找到目录和文件, 但是find应该跳过其结果中的顶部目录

如果您不介意一点开销,您可以过滤结果

find / -ea -type d | grep -v 'arcdst'
当您不希望find首先在arcdst中查找时,您可以告诉find不要在arcdst目录中查找

find $(ls / | grep -v arcdst) -ea -type d 

您应该使用
,而不是
-name
-路径“模式”
选项:

find / -ea -type d ! -path "*arcdst*"
find / -ea -type d ! -regex ".*arcdst.*"
这将跳过
“*arcdst*”
路径下的所有目录

或者您可以使用
-regex
选项:

find / -ea -type d ! -path "*arcdst*"
find / -ea -type d ! -regex ".*arcdst.*"

不幸的是,我得到了以下错误,但感谢您的评论
find:0652-017-print0不是一个有效的选项。
@shelleter也许我遗漏了一些东西,但我认为这里不需要
xargs
。。。只需
查找…|grep-v…
。否则它会尝试搜索所有文件的内容…@twalberg:正确。深夜评论有误。8-/Tnx。这在我的非prod服务器上有效,其中/usr/bin/find的日期为2012年9月17日。但是,当我在prod服务器上尝试它时,我的脚本最终必须运行,文件日期为2011年8月9日,我得到以下信息:
find:0652-017-path不是一个有效选项。
但即使在较新版本的find手册页中也没有提到这个选项,我希望这样做,因为它似乎可以工作。嗯,旧的查找二进制文件可能不支持
-path
选项。但是
-path
确实是获得正确输出的正确方法。