Lösung 1:
find
werden den Verzeichnisbaum in der Reihenfolge durchlaufen, in der Elemente innerhalb der Verzeichniseinträge gespeichert sind. Dies wird (meistens) von Lauf zu Lauf auf demselben Computer konsistent sein und im Wesentlichen die "Reihenfolge der Datei-/Verzeichniserstellung" sein, wenn keine Löschungen stattgefunden haben.
Einige Dateisysteme ordnen Verzeichniseinträge jedoch im Rahmen von Komprimierungsvorgängen oder wenn die Größe des Eintrags erweitert werden muss, neu an, sodass es immer eine kleine Chance gibt, dass sich die "rohe" Reihenfolge im Laufe der Zeit ändert. Wenn Sie eine konsistente Reihenfolge wünschen, führen Sie die Ausgabe durch eine zusätzliche Sortierstufe.
Lösung 2:
Sie sollten sich nicht auf eine bestimmte Ausgabereihenfolge von find
verlassen und sollte stattdessen sort
verwenden und andere Mittel, um die Bestellung gezielt zu steuern.
Lösung 3:
Ich arbeite seit 1984 bzw. 1991 mit UNIX/Linux und der erste Befehl, der mir beigebracht wurde, war find. Linux/GNU hat so ziemlich alles, was Sie brauchen, in den aktuellen Find-Befehl gepackt, also spielen Sie damit herum.
Hier sind einige hilfreiche Tipps zum Sortieren der Suchausgabe. Die Option -printf bietet Ihnen viele Optionen, um eine komplexere Sortierung und Darstellung von Dateiinformationen zu ermöglichen. Es ist das Beste für solche Probleme. Spielen Sie damit, um zu sehen, was für Sie funktioniert. Mit -printf können Sie die Ergebnisse nach Ihren Wünschen anpassen und begrenzen. Dies hilft ziemlich viel, wenn Sie die Ergebnisse nachbearbeiten müssen. Ich hoffe, das hilft jemandem.
-
Wenn Sie -ls verwenden und nach Dateinamen sortieren möchten, ist das 11. Feld der Dateiname, sodass Sie Folgendes tun können. Die Option sort -k kann auch nach mehreren Feldern sortieren.
find /pfad -ls | sortieren -k11
-
Wenn Sie eine feinere Steuerung wünschen, d. h. nach Datum/Uhrzeit in aufsteigender oder absteigender Reihenfolge sortieren möchten, verwenden Sie die Option -printf "". Weitere Einzelheiten finden Sie im Handbuch, aber das Folgende ist ein Beispiel, das mit Bruchteilen von Sekunden gedruckt wird, so dass es sehr genau ist.
BEISPIEL DATUM/ZEIT:2016-09-17+12:09:57.9013929800
find /path -printf "%T+ %p\n" | sort -n # Ascending
find /path -printf "%T+ %p\n" | sort -nr # Descending
Eine andere Möglichkeit, dies ohne Zeichen in der Datums-/Zeitzeichenfolge zu tun, ist.
BEISPIEL DATUM/ZEIT:20160917120013.8101685040
find /path -printf "%AY%Am%Ad%AH%AM%AS %p\n" | sort -n