GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden von Bash Sort zum Sortieren von Dateien wie ein Boss

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 auf ls -l Befehl, etwa so:ls -lr . Bestehen der -r Flag auf ls -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 dem sort 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?


Linux
  1. Verwalten Sie das Linux /tmp-Verzeichnis wie ein Boss

  2. Verwenden von Bash für die Automatisierung

  3. Wie sortiert man Dateien nach ihren Berechtigungen mit Ls?

  4. So sortieren Sie Dateien in Linux mit dem Sortierbefehl

  5. Array in Bash nicht gefunden

So lesen Sie Dateien Zeile für Zeile in Bash

Übertragen Sie Dateien mit WinSCP

Bash sortieren

Wie sortiere ich Dateien in Ordnern nach Dateityp auf Bash (mit dem Befehl ‚file‘)?

Übertragen Sie Dateien mit lftp im Bash-Skript

Probleme bei der Verwendung von sort und comm