Linux Locate-Befehl nach Datum sortieren

3763
mcaleaa

Mit dem Befehl linux locate können Sie Dateien schnell finden.

Meine Frage: Wie können wir den Befehl locate verwenden, damit die Ergebnisse in der Reihenfolge von Datum und Uhrzeit zurückgegeben werden?

4

2 Antworten auf die Frage

5
onionjake

Dies funktioniert, solange die Dateinamen keine Leerzeichen enthalten, aber Fehler, wenn zu viele Dateien vorhanden sind (siehe http://www.gnu.org/software/coreutils/faq/#Argument-list-too-long ):

$ ls -td $(locate sh) bash: /bin/ls: Argument list too long 

Dies funktioniert auch mit Leerzeichen oder anderen Zeichen in Dateinamen, sortiert jedoch nicht zu viele Dateien richtig:

locate something -0 | xargs -0 ls -ltd 

Folgendes wird immer funktionieren (obwohl es eine Weile dauern kann):

locate something -0 | xargs -0 stat -c'%Y %n' | sort -n 
Das Pipe an `stat` war zehnmal schneller als das Pfeifen an` ls` für mich, obwohl es offensichtlich nicht alle Informationen über 'ls -l' zeigt. Sparhawk vor 7 Jahren 0
2
RedGrittyBrick

Wie wäre es mit:

ls -td $(locate something) 

oder

ls -td1 $(locate something) 
Vielleicht wäre auch ein "-d" von Nutzen. choroba vor 11 Jahren 0
@choroba: guter Punkt, ich werde die Antwort aktualisieren. RedGrittyBrick vor 11 Jahren 0
Dies schlägt für Dateien mit Leerzeichen im Namen fehl. Sparhawk vor 7 Jahren 0