【问题标题】:Find command expression error查找命令表达式错误
【发布时间】:2016-07-18 04:46:19
【问题描述】:

我在使用 cron 和 bash 时遇到了一些困难,主要是 bash。有一个脚本包含:

#!/bin/bash
cd somefolder/
find . -maxdepth 1 -name 'somelog*.log' -mtime +7 –delete

我添加了一个 cronjob 来运行这个脚本:

40 9 * * * /script-location/script.sh

但似乎我的工作没有完成,甚至手动运行命令都不成功:

 find: paths must precede expression: –delete
 Usage: find [-H] [-L] [-P] [-Olevel] [-D    help|tree|search|stat|rates|opt|exec] [path...] [expression]

在这种情况下有什么想法或建议吗?

【问题讨论】:

    标签: linux bash cron find


    【解决方案1】:

    –delete 中的 不是短划线字符。

    替换它,命令按预期执行:

    find . -maxdepth 1 -name 'somelog*.log' -mtime +7 -delete
    

    【讨论】:

    • 我很好奇它是怎么出现的
    • 是的。似乎是这样的......以前从未发生过崇高......哦。我知道......电子邮件客户端会这样做
    【解决方案2】:

    delete 谓词前面的 - 不是通用破折号(ASCII 45)。

    我是怎么找到的:

    好吧,使用od

    你的:

    $ od -c <<<"find . -maxdepth 1 -name 'somelog*.log' -mtime +7 –delete"
    0000000   f   i   n   d       .       -   m   a   x   d   e   p   t   h
    0000020       1       -   n   a   m   e       '   s   o   m   e   l   o
    0000040   g   *   .   l   o   g   '       -   m   t   i   m   e       +
    0000060   7     342 200 223   d   e   l   e   t   e  \n
    

    正确的一项:

    $ od -c <<<"find . -maxdepth 1 -name 'somelog*.log' -mtime +7 -delete"
    0000000   f   i   n   d       .       -   m   a   x   d   e   p   t   h
    0000020       1       -   n   a   m   e       '   s   o   m   e   l   o
    0000040   g   *   .   l   o   g   '       -   m   t   i   m   e       +
    0000060   7       -   d   e   l   e   t   e  \n
    0000072
    

    【讨论】:

    • 非常感谢。真的很有用。每天在stackoverflow上我都学到了新东西......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    相关资源
    最近更新 更多