我想删除目录中最旧的文件,限制为 100 个文件。换句话说,我要确保目录中存在的文件不超过 100 个,如果超过限制,则删除限制后最旧的文件。我不只是想删除超过 x 天的文件,因为如果这是在 cronjob 上运行的,最终所有文件都会被删除。
我想如果我要对此进行编程,伪代码将是:
list = dir.getFiles()
list.sortByDate()
deleteList = list.getSubList(100, end) // from, to
deleteAll(deleteList)
Run Code Online (Sandbox Code Playgroud)
那么合适的 Unix 命令是什么?我想find会以某种方式参与-exec争论,但我不确定排序/限制方面。
find应该没有必要。如果你先去正确的目录,
rm -f `ls -rt | head -n -100`
Run Code Online (Sandbox Code Playgroud)
指定路径
rm -f `ls -rt /path/to/my/dir | head -n -100`
Run Code Online (Sandbox Code Playgroud)
和cron(在 Ubuntu 上!)
/bin/rm -f `/bin/ls -rt /path/to/my/dir | /usr/bin/head -n -100`
Run Code Online (Sandbox Code Playgroud)
命令路径可以使用which,例如
which ls
Run Code Online (Sandbox Code Playgroud)
最后,如果文件名包含空格,它们应该被引用ls -Q然后发送到xargs
/bin/ls -Qrt /path/to/my/dir | /usr/bin/head -n -100 | /usr/bin/xargs /bin/rm -f
Run Code Online (Sandbox Code Playgroud)
(在Ubuntu上进行测试,为你的测试,取代rm -f有echo看到什么将被删除)