我可以使用什么Unix命令来强制限制文件夹中的100个文件?

我想删除目录中最旧的文件,超过100个文件的限制。 换句话说,我想确保目录中不存在超过100个文件,如果超出限制,则删除限制后的最早的文件。 我不只是想删除x天以前的文件,因为如果这是在cronjob上运行,最终所有的文件将被删除。

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

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

那么适当的Unix命令是什么呢? 我猜find会涉及-exec参数,但是我不确定sorting/限制的方面。

find不应该是必要的。 如果你先到右边的目录,

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

指定一个path

 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` 

命令path可以使用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上进行testing,为了testing,用rm -freplacerm -f来查看要删除的内容)

你是否重新发明了称为日志旋转的轮子? 如果是这样,使用logrotate(在Linux系统;其他系统将有自己的等效程序)。