2013-02-26 124 views
0

我是一名腳本新手。我正在嘗試爲我的Ubunutu 10.04服務器編寫一個簡單的bash腳本,以便在不同文件夾中刪除年齡大於30天的文件夾中的歸檔文件(比舊版本更早)。它們可以是兩條不同的命令行,因爲我將它們放在不同的腳本中。文件年齡的BASH刪除腳本

我只是嘗試以下,這並不在所有的工作開始了:

# find ~/addon_backups/202 -name 202adata* -maxdepth 0 -ctime +30 

# find ~/addon_backups/202/ME -name *.tar.gz -maxdepth 0 -ctime +365 

我正在分別如下:

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

find: paths must precede expression: 0213ME-202.tar.gz 
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] 

我已經嘗試了多種變化,我明顯錯過了一些東西。任何幫助表示讚賞。

+0

[這] [1]似乎回答你的問題: [1]:http://stackoverflow.com/questions/6495501/find-paths-must-precede-expression-how-do -i-specify-a-recursive-search-that – zzk 2013-02-26 23:50:54

回答

2

你必須引用參數-name這樣的外殼不會解釋它(shellcheck自動指向了這一點):

find ~/addon_backups/202/ME -name "*.tar.gz" -maxdepth 0 -ctime +365 

另外請注意,您需要使用-mtime代替-ctime-maxdepth 1而不是0,您可以使用-exec rm() {} +刪除:

find ~/addon_backups/202/ME -name "*.tar.gz" -maxdepth 1 -mtime +365 -exec rm {} + 

或者更簡單地說:

+0

我知道我很親密。所有這一切都像一個冠軍,謝謝! – AvatharV 2013-02-27 00:03:16