【问题标题】:Recursive grep for bash in cygwincygwin中bash的递归grep
【发布时间】:2010-09-02 19:44:49
【问题描述】:

如果我想要一个别名来执行“rgrep pattern *”来搜索从我当前位置向下通过任何子目录的所有文件,我可以添加到我的 bashrc 文件中的 rgrep 的别名是什么?

我也希望它忽略错误并只报告正面命中

【问题讨论】:

    标签: bash grep


    【解决方案1】:

    为了让它忽略错误(例如“权限被拒绝”),您可能需要使用函数而不是别名:

    rgrep () { grep -r "${@}" 2>/dev/null; }
    

    【讨论】:

    • 我将如何修改它以使其也能找到目录?如果我有一个名为“hi”的目录,并且我想从某个上层目录执行“rgrep hi *”,我希望该命中也出现
    • grep 不搜索文件或目录名称,并且没有可以传递的标志来使其做到这一点。它只查看文件 contents。如果要打印基于文件/目录名称的结果,则需要单独调用 find . -name 之类的命令。如果你真的想让你奇怪的 rgrep 两者兼而有之,它可以使用相同的功能。
    • @Derek:正如沃尔特所说,find 可能就是你想要的。
    【解决方案2】:

    怎么样:

    alias rgrep="grep -r"
    

    这只会显示“肯定命中”,即包含您指定的模式的行。

    不过,小建议:您可能希望习惯于直接使用grep -r。例如,如果您需要使用其他人的工作站,您会发现它会变得容易得多!

    编辑:您希望匹配文件名称中的模式,而不是它们的内容(也包括目录名称)。那么这个怎么样:

    alias rgrep="find | grep"
    

    默认情况下,find 会查找所有文件和目录,因此只需将该列表传递给grep 即可找到您要查找的模式。

    【讨论】:

    • 我认为这会错过以我的模式命名的目录,嗯?
    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    相关资源
    最近更新 更多