文件年龄的BASH删除脚本

时间:2013-02-26 23:45:15

标签: bash find

我是一名脚本新手。我正在尝试为我的Ubunutu 10.04服务器编写一个简单的bash脚本,以删除超过30天的文件夹中的存档。在不同的文件夹中超过一年。它们可以是两个不同的命令行,因为我将它们放在不同的脚本中。

我刚开始尝试以下操作,但根本不起作用:

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

我尝试了多种变化,但我显然遗漏了一些东西。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

你必须将参数引用到-name,以便shell不会解释它(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 {} +

或更简单:

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