Nach Datum sortieren


16

Original:

23.01.2011 10:42 ETWAS 2007.12.20.avi
26.06.2009 ETWAS 2009.06.25.avi
12.02.2010 ETWAS 2010.02.11.avi
29.01.2011 09:17 ETWAS 2011.01.27.avi
11.02.2011 20:06 ETWAS 2011.02.10.avi
27. Februar 2011 23:05 ETWAS 2011.02.24.avi

Ausgabe:

27. Februar 2011 23:05 ETWAS 2011.02.24.avi
11.02.2011 20:06 ETWAS 2011.02.10.avi
29.01.2011 09:17 ETWAS 2011.01.27.avi
23.01.2011 10:42 ETWAS 2007.12.20.avi
12.02.2010 ETWAS 2010.02.11.avi
26.06.2009 ETWAS 2009.06.25.avi

Ich habe die obige Liste (Original) erstellt mit:

ls -A -lR | grep "^-" | sed "s/.\{43\}/&\n/" | grep -v "^-" | while read ONELINE; do if echo $ONELINE | cut -d " " -f3 | grep -o '[0-9][0-9]:[0-9][0-9]' > /dev/null 2>&1; then echo $ONELINE | sed "s/.\{7\}/&$(date +%Y) /"; else echo $ONELINE; fi; done

Wie kann ich die Ausgabe erhalten, bei der die neueste Datei oben steht?


2
@ user4724: Wie hast du die Liste erstellt?

@ user4724: Das erzeugt für mich nicht die gleiche Art von Outpout, die Sie haben - egal wie Gilles die Antwort hat

Antworten:


19

Bei den meisten Unices lsgibt es eine -tOption. Von der manSeite meiner Debian-Box:

-t Nach Änderungszeit sortieren

Versuchen Sie den folgenden Befehl:

$ ls -lt


Ich brauche es rekursiv, sorry
LanceBaynes

+ ls -lt listet ein vollständiges Verzeichnis auf, wenn 1 Datei darin geändert wird.
LanceBaynes

14

Handelt es sich um eine Textdatei, die Sie sortieren möchten, oder versuchen Sie, eine Verzeichnisliste nach Datum anzuzeigen? Für letzteres benutzen Sie die -tFlagge zuls . Für erstere siehe insbesondere das -MFlag to GNU sort, das nach dreistelligen Monatsnamen-Abkürzungen sortiert. Der folgende Befehl sortiert nach der 3., 1., 2. und 4. Spalte und behandelt den zweiten Sortierschlüssel als Monatsnamen.

sort -k 3 -k 1M -k2 -k4 in.txt

Denken Sie daran, Datumsangaben im japanischen / ISO-Stil immer in der Reihenfolge JJJJ-MM-TT-HH-MM-SS (dh höchstwertige erste, konstante Spaltenbreite) zu verwenden. Auf diese Weise ist die Sortierung nach Datum identisch mit einer lexikografischen Sortierung.


Vergessen Sie nicht die führenden Nullen in diesem Datumsformatvorschlag. Dies ist das Format, das ich verwende, wenn ich die Zeichenfolge selbst formatiere.
Gestohlener Moment

@stolenmoment Sie können Leerzeichen anstelle von Nullen verwenden, wenn Sie nichts dagegen haben. Der wichtige Punkt ist eine konstante Spalte mit. 2018  5 26funktioniert genauso gut wie 2018 05 26(solange Sie nicht durch Markups gehen, die aufeinanderfolgende Leerzeichen zusammenführen ...), was nicht gut funktioniert, ist 2018 5 26.
Gilles 'SO - hör auf böse zu sein'

Ja, ich vermeide reflexartig Leerzeichen in Dateinamen, ich bin sicher, Sie können sich vorstellen, warum.
Gestohlen

3

Ich bin nicht sicher, ob die Funktionalität im lsBefehl enthalten war, als die ursprüngliche Frage gestellt wurde, aber jetzt können Sie die Option verwenden --full-time.

z.B,

ls -t --full-time 

wird mit der ältesten Zeit unten sortiert; oder wenn Sie verwenden:

ls -tr --full-time

dann wird die Reihenfolge umgekehrt.


Die Frage ist, wie die Datei nach Änderungsdatum und -zeit sortiert wird. Die -tOption beantwortet diese Frage vollständig. --full-timeist nicht wirklich relevant.
G-Man sagt, dass Monica

Die einzige Option -t gibt Ihnen nicht das Jahr für Dateien an, die innerhalb von sechs Monaten geändert wurden, während --full-time genau das angibt. Sie können auch die Uhrzeit verwenden, um ein Datumsformat nach Ihren Wünschen zu formatieren. zB ls -ltr - time-style +% Y-% m-% d \% H:% M:% S
Bevan Thomas

Ich bin mir nicht sicher, was du meinst.  ls -tgibt Ihnen weder den Modus und den Eigentümer der Dateien, den Hostnamen und die Betriebssystemversion noch den Preis für Tee in China an.  ls -tzeigt nicht einmal das Änderungsdatum an. Bei der Frage geht es jedoch nicht um die Anzeige von Dateiinformationen, sondern um das Sortieren von Dateien nach Änderungsdatum. Sie tragen nicht zur Beantwortung der Frage bei. Sie fügen nützliche Zusatzinformationen hinzu. Wenn Sie 50 Reputationspunkte erhalten , können Sie diese Art von Informationen als Kommentar veröffentlichen .
G-Man sagt, dass Monica

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.