Was ist die Standardsortierreihenfolge für Einträge, die vom Befehl linux find zurückgegeben werden?
Zum Beispiel, wenn ich ausstelle
find . -type f -name '*mp3'
und die Ausgabe besteht aus mehreren Dateien in mehreren Unterordnern. In welcher Reihenfolge werden die Verzeichnisse standardmäßig aufgelistet? Wie ist gleichzeitig die Sortierreihenfolge, in der die Dateien in einem einzelnen Verzeichnis aufgelistet sind?
Manchmal kommt es zurück:
./B/01.mp3
./A/01.mp3
./A/04.mp3
./A/02.mp3
Sehen Sie, wie zuerst der Inhalt von Verzeichnis B und dann der von Verzeichnis A aufgelistet wird. Gleichzeitig werden Dateien in Verzeichnis A in einer lustigen Reihenfolge aufgelistet.
-s
Parameter zum alphabetischen Sortieren der Ausgabe.Antworten:
find
wird den Verzeichnisbaum in der Reihenfolge durchlaufen, in der die Einträge in den Verzeichniseinträgen gespeichert sind. Dies ist (meistens) von Lauf zu Lauf auf demselben Computer konsistent und entspricht im Wesentlichen der "Datei- / Verzeichniserstellungsreihenfolge", wenn keine Löschungen vorgenommen wurden.Einige Dateisysteme ordnen die Verzeichniseinträge jedoch im Rahmen von Komprimierungsvorgängen oder wenn die Größe des Eintrags erweitert werden muss, neu an, sodass die Wahrscheinlichkeit gering ist, dass sich die "unformatierte" Reihenfolge mit der Zeit ändert. Wenn Sie eine konsistente Reihenfolge wünschen, führen Sie die Ausgabe einer zusätzlichen Sortierstufe zu.
quelle
find /path/ -exec ...
und viel schnellerfind /path/
, um zuerst eine sortierte Liste von Dateien zu erhalten.Sie sollten sich nicht auf eine bestimmte Ausgabereihenfolge von verlassen
find
und stattdessensort
andere Mittel verwenden, um die Reihenfolge spezifisch zu steuern.quelle
Ich arbeite seit 1984/1991 unter UNIX / Linux und der erste Befehl, der mir beigebracht wurde, war find. Linux / GNU hat so ziemlich alles, was Sie brauchen, in den aktuellen Befehl find eingefügt. Spielen Sie also damit herum.
Hier finden Sie einige hilfreiche Tipps zum Sortieren der Suchausgabe. Die Option -printf bietet zahlreiche Optionen, um eine komplexere Sortierung und Präsentation von Dateiinformationen zu ermöglichen. Es ist das Beste für solche Probleme. Spielen Sie damit, um zu sehen, was für Sie funktionieren wird. Mit -printf können Sie die Ergebnisse nach Ihren Wünschen anpassen und eingrenzen. Dies ist sehr hilfreich, wenn Sie die Ergebnisse nachbearbeiten müssen. Ich hoffe das hilft jemandem.
Wenn Sie -ls verwenden und nach dem Dateinamen sortieren möchten, ist das 11. Feld der Dateiname, sodass Sie Folgendes tun können. Die Option sort -k kann auch mehrere Felder zum Sortieren enthalten.
find / path -ls | sort -k11
Wenn Sie eine genauere Sortierung der Körnung nach Datum / Uhrzeit in aufsteigender oder absteigender Reihenfolge wünschen, verwenden Sie die Option -printf "". Weitere Informationen finden Sie im Handbuch. Das folgende Beispiel wird in Bruchteilen von Sekunden gedruckt und ist daher sehr genau.
BEISPIEL DATUM / ZEIT: 2016-09-17 + 12: 09: 57.9013929800
Eine andere Möglichkeit, dies ohne Zeichen in der Datums- / Uhrzeitzeichenfolge zu tun, ist.
BEISPIEL DATUM / ZEIT: 20160917120013.8101685040
quelle