bashfindbackups

BASH: show find all files but not last 2 newest


I have a list of files one time list can contain:

1489247450-filename1
1489248450-filename2
1489249450-filename3
1489249550-filename4

and another time:

1489249450-filename3
1489249550-filename4

and another time:

1489245450-filename1
1489246450-filename2
1489247450-filename3
1489248450-filename4
1489249450-filename5
1489249550-filename6

The list is created by:

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

I would like to choose all of the files but not the 2 newest.

I can build a script which could count all files and subtract 2 and after that do | head. But is there much more simple way to do this?

I would like to remove old files in only condition that there is a 2 newest.

I don't want to use ctime because files are not created in regular time.


Solution

  • The result was really simple.

    If You would like to list all files but the newest 3 you can do:

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

    The head -n -3 is the main thing!!