查找命令表达式错误

时间:2016-03-30 09:16:46

标签: linux bash cron find

我在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]

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

-谓词前面的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