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是主要的!!
我有一份文件列表,一次列表可以包含:
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是主要的!!