Suchen Sie nach einer Möglichkeit, Ihre Dateien zu organisieren und einige Operationen mit ihnen durchzuführen? Es gibt viele Fälle in der Programmierung, in denen Sie einige Daten sortieren müssen, z. B. eine Liste von Dateien. Sortieren von Dateien mit der Bash sort
und ls
Befehle helfen Ihnen, die Dinge zu organisieren.
In diesem Tutorial lernen Sie die Grundlagen zum Sortieren von Dateien und Dateiinhalten kennen.
Fangen wir an zu sortieren!
Voraussetzungen
Dieses Tutorial verwendet Ubuntu 20.04, aber jede Linux-Distribution funktioniert.
Bash Dateien alphabetisch sortieren
Es gibt unzählige Möglichkeiten, Dateien in Linux zu sortieren, aber kommen wir zur gebräuchlichsten Methode, Dateien alphabetisch zu sortieren.
Starten Sie Ihr Terminal und führen Sie ls -l
aus Befehl unten, um eine Liste der Dateien in einem Verzeichnis in aufsteigender Reihenfolge zu erhalten. Die -l
Flag teilt dem ls
mit Befehl zum Drucken der zurückgegebenen Ausgabe in einem langen Listenformat.
ls -l
Standardmäßig der
ls
Der Befehl listet Dateien in aufsteigender Reihenfolge auf. Um die Sortierreihenfolge umzukehren, übergeben Sie den-r
Flagge aufls -l
Befehl, etwa so:ls -lr
. Bestehen der-r
Flag aufls -l
Der Befehl gilt für andere Beispiele in diesem Tutorial.
Bash-Sortierung verwenden, um Dateien nach Größe zu sortieren
Anstatt die Dateien alphabetisch zu sortieren, möchten Sie die Dateien möglicherweise nach Dateigröße sortieren. Das Sortieren von Dateien nach Größe ist praktisch, wenn es darum geht, entweder die kleinsten oder die größten Dateien in einer Liste anzuzeigen.
Um Dateien nach Größe zu sortieren, übergeben Sie den -S
Flag, um ls
mitzuteilen Befehl zum Sortieren der Dateiliste nach Dateigröße.
Führen Sie den folgenden Befehl aus, um Dateien aufzulisten (ls
) sortiert nach Dateigröße in einem langen Listenformat (-lS
).
ls -lS
Unten sehen Sie, wie der Befehl die Dateien nach Größe in absteigender Reihenfolge sortiert hat (von der größten zur kleinsten Größe).
Um die Sortierreihenfolge umzukehren (vom kleinsten zum größten), fügen Sie den
-r
hinzu Flag, etwa so:ls -lSr
Dateien nach Änderungszeit über Bash Sort sortieren
Wenn Sie das Sortieren von Dateien nach Größe fortsetzen, stoßen Sie möglicherweise auf einen Anwendungsfall, bei dem Sie Dateien nach dem Zeitpunkt ihrer Änderung sortieren müssen. Sie haben beispielsweise den Namen der von Ihnen erstellten Datei vergessen und erinnern sich nur an die Zeit, zu der Sie die Datei zuletzt geändert haben.
Führen Sie den folgenden Befehl aus, wobei -t
Parameter teilt dem ls
mit Befehl zum Sortieren der Dateien nach Änderungszeit.
ls -lt
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 folgenden Befehl aus, um Dateien aufzulisten (ls
) im Arbeitsverzeichnis und sortieren sie nach ihren Erweiterungen (-lx
).
ls -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
Inzwischen haben Sie verschiedene Methoden kennengelernt, um die Dateien in einem Verzeichnis zu sortieren. Verlagern Sie Ihren Fokus von ls
versuchen Sie, sort
auszuführen Befehl. Die sort
Der Befehl sortiert den Dateiinhalt in Abhängigkeit von dem Flag, das Sie hinzufügen werden. Aber zuerst brauchen Sie eine Datei mit Inhalten, die Sie ändern werden.
Führen Sie den folgenden Befehl aus, um eine Textdatei namens ~/data/fruits.txt zu erstellen die Namen von Früchten enthält. Die -e
Flag ermöglicht die Interpretation des Backslash, um jedes Wort in eine neue Zeile zu schreiben (\n
).
echo -e "apple \nmango \nwatermelon \ncherry \norange \nbanana" > fruits.txt
Führen Sie nun den folgenden Befehl zu sort
aus jedes Wort in fruits.txt
.
sort fruits.txt
Unten sehen Sie, dass der Inhalt der Datei in aufsteigender Reihenfolge sortiert ist.
Ohne Flags,
sort
Der Befehl sortiert die Dateiinhalte standardmäßig in aufsteigender Reihenfolge. Um die Sortierreihenfolge umzukehren, fügen Sie den-r
hinzu Flag für den Sortierbefehl, etwa so:sort -r fruits.txt
. Sortierung in umgekehrter Reihenfolge durch Hinzufügen des-r
Flag gilt für andere Beispiele in diesem Tutorial.
Sortieren einer Zahlenliste in einer Textdatei
Der Befehl zum Sortieren von Zahlen ähnelt dem Sortieren von Texten in einer Datei, aber Sie fügen den -n
hinzu Flagge statt. Lassen Sie uns zuerst eine Datei erstellen, um zu demonstrieren, wie der Inhalt einer Datei numerisch sortiert wird.
Führen Sie den folgenden Befehl aus, um eine Datei namens ~/data/scores.txt zu erstellen die Zufallszahlen enthält, jede in einer neuen Zeile.
echo -e "45 \n69 \n52 \n21 \n3 \n5 \n78" > scores.txt
Führen Sie nun den folgenden Befehl zu sort
aus die Zahlen (-n
) in der ~/data/scores.txt Datei.
sort -n scores.txt
Unten sehen Sie die Zahlen in Zeilen beginnend mit der kleinsten bis zur größten Zahl.
Sortieren einer Liste von Versionsnummern in einer Textdatei
Vielleicht haben Sie eine Liste mit Versionsnummern in einer Textdatei, die Sie sortieren möchten. Wenn ja, fügen Sie den --version-sort
hinzu Option wird es tun.
Um zu demonstrieren, wie der --version-sort
Option funktioniert, erstellen Sie zuerst eine Textdatei.
Führen Sie den folgenden Befehl aus, um eine Textdatei namens ~/data/versions.txt zu erstellen mit zufällig aufgelisteten Versionsnummern, jeweils in einer neuen Zeile (\n
).
echo -e "1.0.0.1 \n 6.2.1.0 \n4.0.0.2" > versions.txt
Führen Sie nun den folgenden Befehl zu sort
aus die Versionsnummern (--version-sort
) in der versions.txt Datei. Der --field-separator
Option teilt dem sort
mit Befehl, dass die Nummern in jeder Version durch einen Punkt getrennt werden (.
). Sie können das Feldtrennzeichen in ein beliebiges Zeichen ändern, das die Zahlen der in Ihrer Textdatei aufgelisteten Versionen trennt.
sort --version-sort --field-separator=. versions.txt
Bash Sort zum Suchen und Sortieren von Dateien über die Dateierweiterung
Sie haben einzelne Befehle ausgeführt (entweder ls
oder sort
) in den vorherigen Beispielen. Aber beim Programmieren müssen Sie oft zwei oder mehr Befehle zusammen verwenden. Wie? Indem ein Befehl an einen anderen weitergeleitet wird.
Führen Sie den folgenden Befehl zu find
aus alle Markdown-Dateien (-iname "*.md"
) im Arbeitsverzeichnis (.
) und alphabetisch absteigend sortieren (sort -r
). Versuchen Sie, andere Dateien zu finden und zu sortieren, indem Sie "*.md"
ändern in eine andere Dateierweiterung.
find . -iname "*.md" | sort -r
Wenn Sie die sortierte Ausgabe lieber in einer Textdatei statt in der Standardausgabe auf der Konsole speichern möchten, fügen Sie den
--output
hinzu Option, etwa so:find . -iname "*.md" | sort -r --output=sorted.txt
. Der--output
Option teilt demsort
mit Befehl zum Erstellen einer Ausgabedatei für die sortierte Liste von Dateien.
Schlussfolgerung
Das Motiv dieses Artikels war es, Ihnen verschiedene Arten des Sortierens mit Bash-Befehlen auf einem Linux-Rechner beizubringen. Sie haben nun gelernt, die Auflistung von Dateien zu sortieren und Dateiinhalte zu sortieren. Darüber hinaus sollten Sie auch wissen, wie Sie verschiedene Befehle für eine komplexere Dateisortierung leiten können.
Warum nicht mit diesem neu gewonnenen Wissen als Sprungbrett Skripte erstellen, um Dateilisten und die Sortierung von Dateiinhalten zu automatisieren?