我可以使用哪个 Unix 命令来强制文件夹内文件数限制为 100 个?

我可以使用哪个 Unix 命令来强制文件夹内文件数限制为 100 个?

我想删除目录中最旧的文件(超过 100 个文件的限制)。换句话说,我想确保目录中的文件不超过 100 个,如果超过限制,则删除超过限制的最旧文件。我不想只删除超过 x 天的文件,因为如果在 cronjob 上运行此操作,最终所有文件都会被删除。

我想如果我要编写这个程序,伪代码将是:

list = dir.getFiles()
list.sortByDate()
deleteList = list.getSubList(100, end) // from, to
deleteAll(deleteList)

那么适当的 Unix 命令是什么?我猜find应该以某种方式与-exec参数有关,但我不确定排序/限制方面。

答案1

find应该没有必要。如果你先进入正确的目录,

rm -f `ls -rt | head -n -100`

指定路径

rm -f `ls -rt /path/to/my/dir | head -n -100`

以及cron(在 Ubuntu 上!)

/bin/rm -f `/bin/ls -rt /path/to/my/dir | /usr/bin/head -n -100`

可以使用以下方法确定命令路径which,例如

which ls

最后,如果文件名包含空格,则应将其括起来ls -Q然后发送到xargs

/bin/ls -Qrt /path/to/my/dir | /usr/bin/head -n -100 | /usr/bin/xargs /bin/rm -f

(在 Ubuntu 上测试,为了您的测试,请替换rm -fecho以查看要删除的内容)

答案2

您是否在重新发明日志轮换这个轮子?如果是这样,请使用 logrotate(在 Linux 系统上;其他系统会有自己的等效程序)。

相关内容