我在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]
在这种情况下有什么想法或任何建议吗?
答案 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