So listen Sie nur Verzeichnisse in Linux auf

Der Befehl ls in Linux wird zum Auflisten des Inhalts eines Verzeichnisses verwendet.

Standardmäßig werden alle Inhalte aufgelistet, sei es eine Datei oder ein Verzeichnis oder ein Link oder eine Named Pipe.

Aber was ist, wenn Sie nur die Verzeichnisse auflisten möchten? Wie machst du das?

Wie alles in Linux gibt es mehrere Möglichkeiten, dieselbe Aufgabe zu erfüllen. Das Auflisten nur der Verzeichnisse ist nicht anders:

  • ls -d */
  • ls -l / grep ‚^d‘
  • finden . -maxdepth 1 -Typ d
  • echo */
  • Baum -d -L 1

Keine Sorge. Ich werde die Dinge im Detail erklären. Hier ist der Inhalt des Verzeichnisses, das ich in den Beispielen hier verwenden werde:

 Auflisten des Inhalts eines Verzeichnisses unter Linux

Verwenden Sie den Befehl ls, um nur Verzeichnisse aufzulisten

Es ist immer gut, dies mit dem bekannten Befehl ls zu tun, da dies der Befehl ist, mit dem Sie den Inhalt eines Verzeichnisses anzeigen.

Um nur die Unterverzeichnisse aufzulisten, verwenden Sie die Option -d mit dem Befehl ls wie folgt:

ls -d */

Hier ist die Ausgabe, die angezeigt wird:

 Documents]$ ls -d */another_dir/ my_dir/

Warum */? Denn ohne sie gibt ls -d nur den Verzeichnisnamen zurück. Die Option -d listet Verzeichnisse auf, nicht deren Inhalt (einschließlich Datei, Verzeichnisse usw.).

Das */ ist ein Muster. Mit * listen Sie den gesamten Inhalt (einschließlich des Inhalts der Unterverzeichnisse) auf, und / beschränkt das Muster auf Verzeichnisse.

Dieses Bild zeigt den Unterschied ziemlich gut.

Nur Verzeichnisse in Linux auflisten

Sie können es mit der Option für lange Listen kombinieren -l und die meisten anderen Optionen:

 Documents]$ ls -ld */drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir/drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir/

Wenn Sie den abschließenden Schrägstrich (/) am Ende der Verzeichnisnamen nicht möchten, können Sie ihn mit dem Befehl cut ausschneiden:

 Documents]$ ls -ld */ | cut -f1 -d'/'drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dirdrwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir

Nur Unterverzeichnisse in einem bestimmten Verzeichnis auflisten

Der obige Befehl funktioniert im aktuellen Verzeichnis. Was ist, wenn Sie sich nicht im selben Verzeichnis befinden?

In dieser Situation können Sie */ am Ende des Pfads des Verzeichnisses mit ls -d:

ls -d Path/To/Dir/*/

Hier ist ein Beispiel, in dem ich das Dokumentenverzeichnis verlasse und dann nur die Verzeichnisse im Dokumentenverzeichnis aufliste:

 ~]$ ls -ld Documents/*/drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 Documents/another_dir/drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 Documents/my_dir/

Haben Sie bemerkt, dass das versteckte Verzeichnis nicht aufgelistet wird? Das ist ein Manko dieser Methode. Sie können ls -d .*/ verwenden, um versteckte Verzeichnisse anzuzeigen, aber es werden nur versteckte Verzeichnisse angezeigt.

Kombination aus ls und grep-Befehl verwenden

Sie können sich immer auf den guten alten grep-Befehl verlassen, um die Ausgabe nach bestimmten Inhalten zu filtern.

Wenn Sie den Inhalt lange auflisten, können Sie die Verzeichnisse identifizieren, die mit d beginnen.

Sie können grep verwenden, um die Inhalte zu filtern, die mit d beginnen:

ls -l | grep '^d'

Dies gibt Ihnen jedoch viel mehr Felder als nur die Verzeichnisnamen:

 Documents]$ ls -l | grep '^d'drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dirdrwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir

Verwenden Sie den Befehl find, um nur Verzeichnisse aufzulisten

So verwenden Sie den Befehl find, um nur die Unterverzeichnisse aufzulisten:

find directory_path -maxdepth 1 -type d

Ich hoffe, Sie sind mit dem Befehl find vertraut. Ich werde es trotzdem erklären.

Mit type d bitten Sie den Befehl find, nur nach Verzeichnissen zu suchen.

Mit maxdepth 1 bitten Sie den Befehl find, die Suche nur auf der aktuellen Ebene zu halten (und nicht in die Unterverzeichnisse zu gehen).

 Documents]$ find . -maxdepth 1 -type d../my_dir./another_dir./.my_hidden_dir
 List sudirectories only with find command in Linux

Wie Sie in der obigen Ausgabe sehen können, wird auch das versteckte Verzeichnis angezeigt.

Verwenden Sie den Befehl tree, um nur Verzeichnisse aufzulisten

Wenn Sie nur die Verzeichnisse auflisten möchten, können Sie auch den Befehl tree verwenden.

Standardmäßig gibt Ihnen der Befehl tree die vollständige Verzeichnisstruktur. Sie können es so ändern, dass nur Verzeichnisse und nur auf der aktuellen Ebene angezeigt werden.

tree -dai -L 1
  • d – Suchen Sie nur nach Verzeichnissen
  • a – Suchen Sie auch nach versteckten Dateien und Verzeichnissen
  • i – Entfernen Sie die Baumstruktur aus dem Display
  • L 1 – Gehen Sie nicht in die Unterverzeichnisse

Hier ist die Ausgabe:

 Documents]$ tree -dai -L 1.another_dirmy_dir.my_hidden_dir3 directories
 Tree-Befehl verwenden, um nur Unterverzeichnisse unter Linux aufzulisten

echo-Befehl zum Auflisten von Verzeichnissen verwenden

Der unwahrscheinliche Kandidat? Sie werden überrascht sein zu wissen, dass echo Befehl in Linux kann auch für die Anzeige des Inhalts eines Verzeichnisses verwendet werden. Versuchen Sie es mit echo * und überzeugen Sie sich selbst.

Ähnlich wie beim Befehl ls können Sie auch das Muster */ verwenden, um nur die Verzeichnisse im aktuellen Arbeitsverzeichnis aufzulisten.

echo */

Hier ist die Ausgabe, die mit der des Befehls ls -d identisch ist:

 Echo-Befehl verwenden, um Verzeichnisse nur in der Linux-Befehlszeile aufzulisten

Es könnte mehr Möglichkeiten geben, nur die Verzeichnisse und nicht die Dateien aufzulisten. In der Tat können die hier diskutierten Methoden einige Wenn und Aber haben, basierend auf dem, wonach Sie suchen.

Wenn Sie nur die Verzeichnisse anzeigen möchten, funktionieren die meisten der von mir besprochenen Befehle. Wenn Sie etwas Spezifischeres wünschen, z. B. nur den Verzeichnisnamen mit Schrägstrich usw. zu erhalten, müssen Sie einige Formatierungen selbst vornehmen.

Ich hoffe, Sie finden diesen Linux-Tipp hilfreich. Fragen und Anregungen sind jederzeit willkommen.

Write a Comment

Deine E-Mail-Adresse wird nicht veröffentlicht.