0

我是一个脚本新手。我正在尝试为我的 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]

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

4

1 回答 1

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 {} +
于 2013-02-26T23:52:37.990 回答