0

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

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

4

2 回答 2

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
于 2017-10-11T16:47:47.357 回答
0

结果真的很简单。

如果您想列出除最新的 3 个文件之外的所有文件,您可以执行以下操作:

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

头 -n -3 是主要的!

于 2017-10-12T08:01:56.227 回答