2016-04-11 4 views
0

Ich benutze | Sortieren, um die bestellten Dateien zu lesen. Aber wenn ich macheLesen der neuesten Dateinamen mit Suche

files=($(find /test/ | sort)) 

auf dem Verzeichnis/Test, bekomme ich die Dateinamen in einer anderen Reihenfolge.

ls -lhtr 

Wie bekomme ich die Dateinamen auf die gleiche Weise bestellt ls -lhtr? Ich würde gerne die neuesten Dateinamen zuerst lesen ..

+0

Sie müssten veranlassen, die Änderungszeit sowie die Namen in einem sortierbaren Format (zB JJJJ-MM-TT HH: MM: SS für das Datum + Uhrzeit oder als Unix-Zeitstempel - Sekunden seit 1970) zu drucken -01-01 00:00:00 +00: 00). Eine einfache Art von diesen würde Dinge in der Reihenfolge mit dem letzten Letzten ergeben, wie das 'ls-lhtr' dir geben würde. Untersuchen Sie, ob das '-printf' von' find' die Änderungszeit passend drucken kann. –

+0

@ JonathanLeffler, verwende ich 'finden/test/-printf"% TY-% Tm-% Td% TT% p \ n "| sort -n' aber ich bekomme die ältesten Dateien zuerst .. wie soll ich tun, um die neuesten zuerst zu bekommen? – jimmy

+0

Code in Kommentare in Anführungszeichen einschließen. Was Sie vorschlagen, sieht fast plausibel aus, aber Sie wollen keine numerische Sortierung vornehmen. ISO 8601-Formatdaten sortieren mit einer normalen Sortierung. Also: \ find/saufiler/WEBADM/test/-printf "% TY-% Tm-% Td% TT% p \ n" | sort' sollte funktionieren, solange Sie keine Dateien mit Zeilenumbrüchen in den Namen haben. –

Antwort

0

Übertragen mehrere Kommentare in eine Antwort.

würden Sie arrangieren müssen die Änderungszeit sowie die Namen in einem sortierbare Format (zB YYYY-MM-TT HH drucken: MM: SS für das Datum + Zeit oder als Unix-Zeitstempel - Sekunden seit 1970-01-01 00:00:00 +00: 00). Eine einfache Art auf diese würde Dinge in der Reihenfolge mit der neuesten Last ergeben, wie die ls -lhtr würde Ihnen geben. Untersuchen Sie die -printf von GNU find - es kann die Modifikationszeit entsprechend drucken.

Ich benutze find /test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort -n, aber ich bekomme die ältesten Dateien zuerst. Wie sollte ich tun, um das Neueste zuerst zu bekommen?

Was Sie vorschlagen, sieht fast plausibel aus, aber Sie wollen keine numerische Sortierung durchführen. ISO 8601-Formatdaten sortieren mit einer normalen Sortierung. Daraus folgt:

find /sapfiler/WEBADM/test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort 

sollte funktionieren, die ältesten Dateien Auflistung zuerst, solange Sie keine Dateien mit Zeilenumbrüchen in dem Namen.

Wenn Sie zuerst wollen, müssen Sie in umgekehrter Reihenfolge sortieren, so sort -r statt nur sort.

find /sapfiler/WEBADM/test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort -r 

Beachten Sie, dass dies die Umkehrung der Reihenfolge von ls -lhtr, versehen ist, die zuletzt die neuesten Dateien auflistet.

Verwandte Themen