【问题标题】:Invalid max count in grep functiongrep 函数中的最大计数无效
【发布时间】:2011-03-02 07:13:46
【问题描述】:

如果我执行find . -mmin -1,我会得到“myfile”,它在最后一分钟被修改。

但是当我想通过执行搜索该文件中的特定字符串时

grep 'myString' myfile -mmin -1 

我收到错误invalid max count

我也试过

find . -name "myfile" -exec grep 'myString' myfile -mmin -5

我收到错误find: missing argument to -exec

所以我的问题是How do I grep or cat only the changes within a file which happened in last 5 mins. Now that I know the file name which was modified during that period.

建议?谢谢你的建议。

【问题讨论】:

  • 我认为这个,你最接近:find . -name "myfile" -exec grep 'myString' myfile -mmin -5,但是,如果你需要从 find 执行 grep,它必须是 find . -mmin -1 -exec grep -H "mystring" {} \; 其中 {} 是插入文件名的位置, 和 \;终止 grep 命令。这样,find 会搜索新文件,并在每个文件上执行 grep。

标签: linux unix find grep systemtime


【解决方案1】:

grep 某事 *

错误:

grep:最大计数无效

验证您在当前目录中是否有一个名称中带有前导破折号的文件。 文件名可能会被用作一个选项。

例如:

grep something // okay

touch -- -mmin

**grep 一些东西 **

grep:最大计数无效

解决方法:

**grep -- 某事**

来自man getopt

-- 参数之后的每个参数始终被解释为非选项参数。

【讨论】:

    【解决方案2】:

    据我所知,Grep 没有 mmin 参数。它确实有一个带有数字参数的 -m 参数。 grep 'myString' myfile -m3 将在包含 myString 的 3 行之后停止。因此,错误消息意味着 -mmin 中的 'min' 不是有效的最大计数。

    【讨论】:

      【解决方案3】:

      我在 grep 字符串中忘记转义破折号时也遇到过这种情况:

      例子:

      history | grep '-m yum'
      grep: invalid max count
      
      history | grep '\-m yum'
      ...
      sudo ansible workstations -m yum --fork=20 -a 'name=zsh state=latest'
      

      【讨论】:

        【解决方案4】:

        简单的答案是将grep 命令和find 命令组合成一个命令:

        grep "search-patten" $(find . -mmin -5)
        

        此命令将在当前目录下小于 5 分钟之前的所有修改文件中查找所有匹配到“search-patten”的行。

        grep "search-patten" $(find . -mmin +5)
        

        此命令将在当前目录下所有修改过的文件中查找所有匹配到“search-patten”的行,超过 5 分钟。

        【讨论】:

          猜你喜欢
          • 2014-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-26
          • 1970-01-01
          • 2020-04-24
          • 2015-10-29
          • 1970-01-01
          相关资源
          最近更新 更多