Hinweis: Dies funktioniert für GNU-find, aber nicht für jeden anderen Fund.
find . -maxdepth 1 -size +20M -printf "%T@ %f\n" |
sort -nr | head -n 20 | sed 's/[^ ]\+ //'
Beginnt wie @Rajish, verwendet jedoch den printfBefehl from find, um das Ausgabeformat anzugeben. Es gibt 3 zeitbezogene Formate: atime, ctime und mtime - %Tgilt für mtime %Aund %Cfür die anderen Formate.
@Gibt das Zeitformat in Sekunden seit der Epoche an. %fsteht für den Dateinamen, \nfür einen Zeilenumbruch zwischen 2 Dateien.
Wenn Sie dann in umgekehrter Reihenfolge nach der Nummer sortieren, erhalten Sie zuerst die jüngsten Dateien, und wir nehmen 20 Zeilen¹ mit head.
Am Ende sedwird verwendet, um die Zeitinformationen wegzuwerfen.
¹) Da headzeilenweise gearbeitet wird, kann eine einzelne Datei mit mehr als 20 Zeilenumbrüchen im Namen, was etwas ungewöhnlich, aber nicht verboten ist, die Ausgabe verfälschen, wenn sie zu den ersten 20 Übereinstimmungen gehört. Wenn Sie solche Dateien haben, versuchen Sie bitte, sie zu entfernen, um ihren Namen zu ändern. Sie sind häufig ein Problem für einfache Skripte.
file‚s-lsBefehl, werden die Sonderzeichen als Backslash-Escape - Zeichen gedruckt werden:find . -maxdepth 1 -size +20M -printf "%T@ " -ls | sort -nr | head -n 20 | sed 's/[^ ]\+ //'. Außerdem sieht das Format so ausls -l, als hätte EoghanM auch-lsowieso angegeben .