【问题标题】:Search Multiple directories and return one result搜索多个目录并返回一个结果
【发布时间】:2015-08-12 08:41:12
【问题描述】:

我正在尝试将我在 AIX 机器上运行的一段代码带到 Linux 上,但我无法让它工作。

[ -f $FolderPath/*/FileName.txt ] && echo 1 || echo 0

上面搜索FolderPath,然后*是它所有子目录寻找FileName.txt。如果找到(不止一次),则返回 1,否则返回 0。

在 Linux 中,我收到 Too Many Arguments 错误,因此我认为更改为 [[ ]] 可以解决此问题,但它似乎无法处理其中的通配符 *。

有人有什么想法吗?

谢谢

【问题讨论】:

    标签: linux search aix


    【解决方案1】:

    你可以试试下面的命令,然后查询状态码$?

    find $FolderPath -name 'FileName.txt' | grep -E '*'
    

    find 命令没有列出任何文件时返回 1,如果有则返回 0。

    或者,如果您只想达到特定级别以避免深入搜索目录树,那么您可以使用-maxdepth n 选项。

    【讨论】:

    • 不会因为同样的问题“争论太多”而绊倒吗?
    • 由于递归搜索,它还提供了更多的点击率。
    • 我在我的 Linux 环境中尝试过这个,它可以在与您使用的类似的测试目录树中正常工作。关于递归,您是否只对向下一层查看目录感兴趣?
    • 对不起,不要把我和 OP 搞混了……如果只有几场比赛当然可以,但显然 OP 的情况是出现了太多点击。我发表了第一个评论,因为在我看来它创建了一个所有命中的列表,这是进一步处理的,这应该导致相同的问题,因为它是相同的情况。
    • @LewisNorton 感谢您的建议,它让我走上了正确的道路。我最终稍微改变了它,它给了我正确的结果。我的最后一段代码是find $FolderPath -name 'FileName.txt' | grep -E '*' >> /dev/null && echo 0 || echo 1
    猜你喜欢
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 2017-11-10
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2012-06-06
    相关资源
    最近更新 更多