首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找排除多个目录- z/OS USS区域

查找排除多个目录- z/OS USS区域
EN

Unix & Linux用户
提问于 2018-04-18 15:51:18
回答 1查看 367关注 0票数 0

在z/OS (大型机2.1版) Unix System Services区域,我试图执行以下命令:

假设我有以下目录结构:

代码语言:javascript
复制
/tmp
    /dir1-include
    /dir2-exclude
    /dir3-include
    /dir4-exclude

我正在尝试计算dir1-includedir3-include中90天以上的所有文件。以下命令似乎不起作用:

代码语言:javascript
复制
find /tmp/ \( -path /dir2-exclude -prune -o \
                  -path /dir4-exclude -prune \
               \) \
               -o -type f -mtime +90 | wc -l

它给了我:

代码语言:javascript
复制
FSUM6372 Unknown option "-path"
Usage: find directory ... expression`
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-04-18 18:10:17

有很多方法可以做到这一点。下面的所有选项都适用于z/OS。

如果您的find不支持-path,并且假设没有文件名将包含换行符(通过管道连接到wc),那么可以使用grep

代码语言:javascript
复制
find /tmp/ -type f -mtime +90 | grep -v /tmp/dir2-exclude | grep -v /tmp/dir4-exclude | wc -l

如果被排除的目录共享一个模式(不排除您想要保留的任何内容),则可以将其简化为:

代码语言:javascript
复制
find /tmp ... | grep -cv '/tmp/dir.*-exclude'

..。同样,这将错误地计算find的输出,如果其中有带有换行符的目录或文件名。

如果您的find支持多个启动路径,以及希望包含共享模式的路径,那么您可以这样处理它:

代码语言:javascript
复制
find /tmp/dir*-include -type f -mtime +90 | wc -l

另外,-prune选项不会下降到上述目录下。

代码语言:javascript
复制
find /tmp/ -type d -name "/dir2-exclude" -prune -o -type d -name "/dir4-exclude" -prune -o -type f -mtime +90 | wc -l
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/438542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档