我想删除目录中最旧的文件,超过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系统;其他系统将有自己的等效程序)。