【问题标题】:Removing output of 'find' command failures [duplicate]删除“查找”命令失败的输出 [重复]
【发布时间】:2018-02-01 05:21:01
【问题描述】:

我目前正在编写一个脚本,它将在 PATH 中搜索特定程序名称,然后输出该程序的所有路径(可能有多个可执行文件)。 我想出的是find $path -name programName。给定测试输入,虽然它确实生成了正确的输出,但它还为路径中没有程序的目录输出No such file or directory 行。有什么办法可以去掉吗?

谢谢!

编辑:此脚本旨在模仿“which -a”命令,如果有帮助的话

【问题讨论】:

    标签: shell unix find


    【解决方案1】:

    由于您正在寻找程序,我建议您使用以下命令:

    find "$path" -type f -name programName 2>/dev/null
    

    2>/dev/null 将您的stderr 静音 (更多信息:http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html)。

    强制find 仅返回文件,因为您可能有一个名为programName 的文件夹,使用当前命令,find 命令将获取该文件夹。

    此外,如果不可用,您可以添加-executable 选项:-perm /u+x 添加您正在查找文件的约束并且这些文件应该是可执行的。

    find "$path" -type f -name programName -executable 2>/dev/null
    

    【讨论】:

    • -executable 部分很不错。 ++
    • 谢谢! ;-) ;-) 他可以使用file 命令等添加更多约束 ;-)
    【解决方案2】:

    试试:

    find "$path" -name programName -type f 2>/dev/null
    

    【讨论】:

    • 在教学资源中使用未引用的变量可能是有问题的。您可以将$path 更改为"$path"
    • 另外,当您将结果缩小到文件时,您可以使用-type f 进行过滤。
    猜你喜欢
    • 1970-01-01
    • 2017-12-15
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    相关资源
    最近更新 更多