Bash:删除除最后10个日志文件以外的所有文件

时间:2014-03-31 10:44:48

标签: regex bash file

我有一个自定义应用程序,可以为每个订单创建日志文件。日志文件具有随机名称。我想只保留10个最新文件。

到目前为止,我来到这里:

ls -lrth /var/log/myapp/ | awk {'print $9'} | tail -n10

此命令为我提供了10个最新文件的列表。现在,除了这些文件,我想删除其他所有内容。有没有办法获得除这10个最新文件之外的所有文件的列表,或者如何删除除这10个文件之外的所有文件?

干杯, 彼得

2 个答案:

答案 0 :(得分:2)

此查找将为您提供除最近10个最新修改文件之外的所有文件:

find . -exec stat --format="%X" + | sort -n | tail -n+10

使用ls的类似列表:

ls -lt|tail -n+10

答案 1 :(得分:-1)

for i in $(ls -lrth /var/log/myapp/ | awk {'print $9'} | head -n -10) ; do echo $i ; done

检查输出,如果满意,用rm替换echo。