在限制为100个文件后,我想删除目录中最旧的文件.换句话说,我想确保目录中不存在超过100个文件,如果超出限制,则删除限制后的最旧文件.我不只是想删除超过x天的文件,因为如果这是在cronjob上运行,最终所有文件都将被删除.
我想如果我要编程这个,伪代码将是:
list = dir.getFiles() list.sortByDate() deleteList = list.getSubList(100,end) // from,to deleteAll(deleteList)
那么适当的Unix命令是什么?我想find会以某种方式涉及-exec参数,但我不确定排序/限制方面.
发现不应该是必要的.如果你先去正确的目录,
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 ls
最后,如果文件名包含空格,则应引用ls -Q然后将其发送到xargs
/bin/ls -Qrt /path/to/my/dir | /usr/bin/head -n -100 | /usr/bin/xargs /bin/rm -f