我有一个时间列表可以包含的文件列表:
1489247450-filename1
1489248450-filename2
1489249450-filename3
1489249550-filename4
又一次:
1489249450-filename3
1489249550-filename4
又一次:
1489245450-filename1
1489246450-filename2
1489247450-filename3
1489248450-filename4
1489249450-filename5
1489249550-filename6
列表由以下人员创建:
find ./ -type f -name *filename* -exec stat --format="%X-%n" {} \; | sort
我想选择所有文件,但不是最新的2。
我可以构建一个可以计算所有文件并减去2的脚本,之后执行| head
。但有更简单的方法吗?
我想删除旧文件,条件是有最新的2。
我不想使用ctime,因为文件不是定期创建的。
答案 0 :(得分:1)
如果列表顺序正确:
find ./ -type f -name *filename* -exec stat --format="%X-%n" {} \; | sort | tail +3
否则:
find ./ -type f -name *filename* -exec stat --format="%X-%n" {} \; | sort -r | tail +3
答案 1 :(得分:0)
结果非常简单。
如果您想列出所有文件,但您可以执行最新的3个文件:
find ./ -type f -name "*605*" -exec stat --format="%X-%n" {} \; | sort | head -n -3
头-n -3是主要的东西!!