【发布时间】:2017-01-17 22:17:46
【问题描述】:
短版:
我正在尝试编写一个 bash 命令,该命令将根据某些文件的存在和/或不存在生成子目录列表。如果目录名称包含名为“Ready”的文件并且不包含名为“Complete”或“Failed”的文件,则该目录名称将包含在列表中。根据我在这里看到的示例,我一直在使用“查找”命令,但我没有足够好的掌握它或一般的 bash 以使其工作。
find . -maxdepth 1 -name Ready | find -mindepth 1 -maxdepth 1 -type d '!' -exec test -e "{}/Complete" ';' -print | find -mindepth 1 -maxdepth 1 -type d '!' -exec test -e "{}/Failed" ';' -print
长版:
在我们的系统中,另一组丢弃了由我们的一个应用程序处理的文件目录(“包”)。这些目录可以包含一个或多个零长度状态文件,这些文件指定捆绑包已准备好进行处理(“就绪”)或应被忽略,因为它已成功处理(“已完成”)或先前存在错误(“失败” ")。
大部分系统都是购买的软件,我们开始开发一些本土的监控、管理和指标收集工具。我正在尝试编写一个脚本,该脚本将在任何给定时间查看这些目录,并根据状态文件的存在与否确定其中哪些已准备好进行处理,哪些将被忽略。
【问题讨论】:
-
管道
find到find没有意义。使用一个find和多个-exec语句代替。