2016-03-30 25 views
0
我有cron和bash的一些困難

,大多bash.There是一個包含腳本:查找命令表達錯誤

#!/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] 

任何想法爲什麼或在這種情況下的任何建議?

回答

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 
+0

非常感謝。真的真的很有用。每天在stackoverflow我學習一件新事物... – tudoricc

1

您的–delete中的而不是短劃線字符。

替換它,並命令按預期執行:

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

我很好奇如何彈出 – tudoricc

+0

@tudoricc,因爲你從某處複製了命令... – 123

+0

yeah.seems這樣...從來沒有發生過與崇高...哦,我知道....電子郵件客戶端做到這一點 – tudoricc