BASH: 显示找到所有文件但不是最后 2 个最新的

BASH: show find all files but not last 2 newest

我有一份文件列表,一次列表可以包含:

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,因为文件不是定时创建的。

如果列表顺序正确:

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

结果真的很简单。

如果您想列出除最新的 3 个文件之外的所有文件,您可以这样做:

find ./ -type f -name "*605*" -exec stat --format="%X-%n" {} \; | sort | head -n -3

head -n -3是主要的!!