我是一名脚本新手。我正在尝试为我的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]
我尝试了多种变化,但我显然遗漏了一些东西。任何帮助表示赞赏。
答案 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 {} +