Bist du auf der Suche nach einer Möglichkeit, deine Dateien zu organisieren und einige Operationen an ihnen durchzuführen? Es gibt viele Fälle in der Programmierung, in denen du Daten sortieren musst, wie zum Beispiel eine Liste von Dateien. Das Sortieren von Dateien mit den Bash-Befehlen sort
und ls
hilft dir, die Dinge organisiert zu halten.
In diesem Tutorial lernst du die Grundlagen des Sortierens von Dateien und Dateiinhalten.
Los geht’s mit dem Sortieren!
Voraussetzungen
Dieses Tutorial verwendet Ubuntu 20.04, aber jede Linux-Distribution wird funktionieren.
Bash-Dateien alphabetisch sortieren
Es gibt viele Möglichkeiten, Dateien in Linux zu sortieren, aber lassen Sie uns auf die häufigste Methode eingehen, Dateien alphabetisch zu sortieren.
Starten Sie Ihr Terminal und führen Sie den Befehl ls -l
unten aus, um eine Liste von Dateien in einem Verzeichnis in aufsteigender Reihenfolge zu erhalten. Der -l
-Flag teilt dem ls
-Befehl mit, das zurückgegebene Ergebnis in einem langen Listenformat auszugeben.

Standardmäßig listet der
ls
-Befehl Dateien in aufsteigender Reihenfolge auf. Um die Sortierreihenfolge umzukehren, geben Sie den-r
-Flag an denls -l
-Befehl weiter, wie folgt:ls -lr
. Das Weitergeben des-r
-Flags an denls -l
-Befehl gilt für andere Beispiele in diesem Tutorial.
Verwendung von Bash Sort zum Sortieren von Dateien nach Größe
Anstatt Dateien alphabetisch zu sortieren, möchten Sie möglicherweise Dateien nach ihrer Größe sortieren. Das Sortieren von Dateien nach Größe ist praktisch, wenn Sie entweder die kleinsten oder größten Dateien in einer Liste priorisieren möchten.
Um Dateien nach Größe zu sortieren, geben Sie das Flag -S
an den Befehl ls
weiter, um die Liste der Dateien nach ihrer Größe zu sortieren.
Führen Sie den folgenden Befehl aus, um Dateien (ls
) in einer langen Listenformatierung (-lS
) nach Dateigröße zu sortieren.
Unten sehen Sie, dass der Befehl die Dateien nach Größe in absteigender Reihenfolge sortiert hat (größte zu kleinste in Größe).
Um die Sortierreihenfolge umzukehren (kleinste zu größte), fügen Sie das Flag
-r
hinzu, so:ls -lSr

Dateien nach Änderungszeit über Bash sortieren
Wenn Sie sich vom Sortieren nach Größe fortbewegen, könnten Sie auf einen Anwendungsfall stoßen, bei dem Sie Dateien nach dem Zeitpunkt sortieren müssen, an dem sie geändert wurden. Zum Beispiel haben Sie den Namen der Datei vergessen, die Sie erstellt haben, und Sie erinnern sich nur an die Zeit, zu der Sie die Datei zuletzt geändert haben.
Führen Sie den folgenden Befehl aus, wobei der Parameter -t
dem Befehl ls
mitteilt, die Dateien nach Änderungszeit zu sortieren.

Dateien nach Dateierweiterung sortieren
Wenn Sie nach einer Datei mit einem bestimmten Dateityp suchen, ist das Sortieren von Dateien nach Dateierweiterung die ideale Lösung.
Führen Sie den Befehl unten aus, um Dateien (ls
) im Arbeitsverzeichnis aufzulisten und basierend auf ihren Erweiterungen zu sortieren (-lx
).
Beachten Sie unten, dass der Befehl die Dateien mit derselben Erweiterung in aufsteigender Reihenfolge basierend auf ihren Namen sortiert hat.

Inhalte in einer Textdatei sortieren
Bisher haben Sie verschiedene Methoden gelernt, um Dateien in einem Verzeichnis zu sortieren. Lenken Sie Ihre Aufmerksamkeit vom ls
-Befehl ab und versuchen Sie, den sort
-Befehl auszuführen. Der sort
-Befehl sortiert die Dateiinhalte je nach Flagge, die Sie hinzufügen werden. Zuerst benötigen Sie jedoch eine Datei mit Inhalten, die Sie ändern werden.
Führen Sie den folgenden Befehl aus, um eine Textdatei mit dem Namen ~/data/fruits.txt zu erstellen, die die Namen von Früchten enthält. Die -e
-Flagge ermöglicht die Interpretation des Backslashes, um jedes Wort in eine neue Zeile (\n
) zu schreiben.
Führen Sie nun den folgenden Befehl aus, um jedes Wort in fruits.txt
zu sortieren
.
Unten sehen Sie, dass der Inhalt der Datei in aufsteigender Reihenfolge sortiert ist.

Ohne Flaggen sortiert der
sort
-Befehl die Dateiinhalte standardmäßig in aufsteigender Reihenfolge. Um die Sortierreihenfolge umzukehren, fügen Sie der Sortierung die-r
-Flagge hinzu, wie folgt:sort -r fruits.txt
. Die Umkehrung der Sortierreihenfolge durch Hinzufügen der-r
-Flagge gilt für andere Beispiele in diesem Tutorial.
Sortieren einer Liste von Zahlen in einer Textdatei
Der Befehl zum Sortieren von Zahlen ähnelt dem Sortieren von Texten in einer Datei, aber Sie fügen stattdessen die -n
-Flagge hinzu. Um zu demonstrieren, wie Sie numerisch den Inhalt einer Datei sortieren können, erstellen wir zuerst eine Datei.
Führen Sie den folgenden Befehl aus, um eine Datei mit dem Namen ~/data/scores.txt zu erstellen, die Zufallszahlen enthält, jeweils in einer neuen Zeile.
Führen Sie nun den folgenden Befehl aus, um die Zahlen (-n
) in der Datei ~/data/scores.txt zu sortieren
.
Sie können unten die in aufsteigender Reihenfolge aufgelisteten Zahlen sehen.

Sortieren einer Liste von Versionsnummern in einer Textdatei
Vielleicht haben Sie eine Liste von Versionsnummern in einer Textdatei, die Sie sortieren möchten. Wenn ja, wird das Hinzufügen der Option --version-sort
den Trick tun.
Um zu demonstrieren, wie die Option --version-sort
funktioniert, erstellen Sie zuerst eine Textdatei.
Führen Sie den folgenden Befehl aus, um eine Textdatei mit dem Namen ~/data/versions.txt mit zufällig aufgelisteten Versionsnummern zu erstellen, jeweils in einer neuen Zeile (\n
).
Führen Sie nun den folgenden Befehl aus, um die Versionsnummern (--version-sort
) in der Datei versions.txt zu sortieren. Die Option --field-separator
teilt dem Befehl sort
mit, dass die Zahlen in jeder Version durch einen Punkt (.
) getrennt sind. Sie können das Feldtrennzeichen auf jedes Zeichen ändern, das die Zahlen in den aufgelisteten Versionen in Ihrer Textdatei trennt.

Bash-Sortierung zum Finden und Sortieren von Dateien nach Dateierweiterung
In den vorherigen Beispielen haben Sie einzelne Befehle (entweder ls
oder sort
) ausgeführt. Aber in der Programmierung müssen Sie oft zwei oder mehr Befehle zusammen verwenden. Wie? Indem Sie einen Befehl an einen anderen pipelining.
Führen Sie den folgenden Befehl aus, um alle Markdown-Dateien (-iname "*.md"
) im Arbeitsverzeichnis (.
) zu finden
und sie in alphabetisch absteigender Reihenfolge zu sortieren (sort -r
). Versuchen Sie, andere Dateien zu finden und zu sortieren, indem Sie "*.md"
durch eine andere Dateierweiterung ersetzen.

Wenn Sie die sortierte Ausgabe lieber in einer Textdatei anstelle von Standardausgabe auf der Konsole speichern möchten, fügen Sie die
--output
-Option hinzu, wie folgt:find . -iname "*.md" | sort -r --output=sorted.txt
. Die--output
-Option teilt demsort
-Befehl mit, eine Ausgabedatei für die sortierte Liste der Dateien zu erstellen.
Fazit
Das Ziel dieses Artikels war es, Ihnen verschiedene Möglichkeiten des Sortierens mit Bash-Befehlen auf einer Linux-Maschine beizubringen. Sie haben nun gelernt, die Liste der Dateien und den Dateiinhalt zu sortieren. Darüber hinaus sollten Sie auch wissen, wie Sie verschiedene Befehle in einer Pipeline für komplexeres Dateisorting verbinden können.
Mit diesem neu erworbenen Wissen als Ausgangspunkt, warum erstellen Sie nicht Skripte, um Dateilisten und die Sortierung des Dateiinhalts zu automatisieren?