清除除n个最新文件之外的所有文件(并且在没有文件时存在故障保护)

时间:2017-07-18 11:57:43

标签: bash find

如果我有一个创建输出jpg文件的进程。我有一个清理脚本,我想清除除最后100个文件以外的所有文件。我用了这个命令:

find -H /tmp -name \*.jpg | xargs ls -rt | head -n -100 | xargs rm -f

这样可以正常工作,除非没有单个jpg文件,在这种情况下,find命令将不会产生输出;所以ls -rt将开始列出/ tmp中的所有文件,并开始删除与*.jpg模式不匹配的随机文件。我使用这样的解决方法:

JPG_FILES=$(find -H /tmp -name \*.jpg)
if [ -n "$JPG_FILES" ]
then
    echo $JPG_FILES | xargs ls -rt | head -n -100 | xargs rm -f
fi

工作正常,但我认为可能有更好的解决方法,或者只是更好的方法来进行这种清理?

PS:我知道this question,但是这给了我删除了不是jpgs的随机旧文件的错误。

0 个答案:

没有答案