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 printf
Befehl from find
, um das Ausgabeformat anzugeben. Es gibt 3 zeitbezogene Formate: atime, ctime und mtime - %T
gilt für mtime %A
und %C
für die anderen Formate.
@
Gibt das Zeitformat in Sekunden seit der Epoche an. %f
steht für den Dateinamen, \n
fü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 sed
wird verwendet, um die Zeitinformationen wegzuwerfen.
¹) Da head
zeilenweise 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-ls
Befehl, 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-l
sowieso angegeben .