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

So listen Sie nur Verzeichnisse in Linux auf

Der Befehl ls in Linux wird verwendet, um den Inhalt eines beliebigen Verzeichnisses aufzulisten.

Standardmäßig listet es alle Inhalte auf, 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 bei allem unter Linux gibt es mehrere Möglichkeiten, dieselbe Aufgabe zu erledigen. Das Auflisten nur der Verzeichnisse ist nicht anders:

  • ls -d */
  • ls -l | grep '^d'
  • finden. -MaxTiefe 1 -Typ d
  • echo */
  • Baum -d -L 1

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

Verwenden Sie den ls-Befehl, um nur Verzeichnisse aufzulisten

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

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

ls -d */

Hier ist die Ausgabe, die es zeigt:

[[email protected] Documents]$ ls -d */
another_dir/  my_dir/

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

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

Dieses Bild zeigt den Unterschied ziemlich gut.

Sie können es mit der langen Auflistungsoption -l kombinieren und die meisten anderen Optionen:

[[email protected] 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 herausschneiden:

[[email protected] Documents]$ ls -ld */ | cut -f1 -d'/'
drwxrwxr-x. 1 abhishek abhishek 16 Nov  7 18:22 another_dir
drwxrwxr-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 */ verwenden am Ende des Pfades des Verzeichnisses mit ls -d :

ls -d Path/To/Dir/*/

Hier ist ein Beispiel, wo ich aus dem Documents-Verzeichnis herausziehe und dann nur die Verzeichnisse innerhalb des Documents-Verzeichnisses aufliste:

[[email protected] ~]$ 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 es das versteckte Verzeichnis nicht auflistet? Das ist ein Manko dieser Methode. Sie können ls -d .*/ verwenden um versteckte Verzeichnisse anzuzeigen, aber es zeigt nur versteckte Verzeichnisse an.

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, da sie mit d beginnen .

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

beginnen
ls -l | grep '^d'

Aber das gibt Ihnen viel mehr Felder als nur die Verzeichnisnamen:

[[email protected] Documents]$ ls -l | grep '^d'
drwxrwxr-x. 1 abhishek abhishek 16 Nov  7 18:22 another_dir
drwxrwxr-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 kennen den Find-Befehl. Ich werde es trotzdem erklären.

Mit type d , weisen Sie den find-Befehl an, nur nach Verzeichnissen zu suchen.

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

[[email protected] Documents]$ find . -maxdepth 1 -type d
.
./my_dir
./another_dir
./.my_hidden_dir

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

Baumbefehl verwenden, um nur Verzeichnisse aufzulisten

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

Standardmäßig liefert Ihnen der Baumbefehl die vollständige Verzeichnisstruktur. Sie können es ändern, um nur Verzeichnisse und nur auf der aktuellen Ebene anzuzeigen.

tree -dai -L 1
  • d - nur nach Verzeichnissen suchen
  • a - auch nach versteckten Dateien und Verzeichnissen suchen
  • i - Entfernen Sie die Baumstruktur aus der Anzeige
  • L 1 - nicht in die Unterverzeichnisse gehen

Hier ist die Ausgabe:

[email protected] Documents]$ tree -dai -L 1
.
another_dir
my_dir
.my_hidden_dir

3 directories

Verwenden des Echo-Befehls zum Auflisten von Verzeichnissen

Der unwahrscheinliche Kandidat? Sie werden überrascht sein zu erfahren, dass der Echo-Befehl unter Linux auch zum Anzeigen des Inhalts eines Verzeichnisses verwendet werden kann. Versuchen Sie es mit echo * und überzeugen Sie sich selbst.

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

echo */

Hier ist die Ausgabe, die mit der identisch ist, die Sie mit ls -d erhalten haben Befehl:

Es könnte mehr Möglichkeiten geben, nur die Verzeichnisse aufzulisten, nicht die Dateien. Tatsächlich können die hier besprochenen Methoden einige Wenn und Aber haben, je nachdem, wonach Sie suchen.

Wenn Sie nur die Verzeichnisse anzeigen möchten, würden die meisten der von mir besprochenen Befehle funktionieren. Wenn Sie etwas Spezifischeres wollen, wie 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 immer willkommen.


Linux
  1. So verwenden Sie den Su-Befehl unter Linux

  2. Linux-ls-Befehl - Dateien auflisten

  3. Linux-Befehl:Wie findet man nur Textdateien?

  4. Wie listet man rekursiv Verzeichnisse in C unter Linux auf?

  5. Wie kann ich alle gesperrten Benutzer in Linux auflisten?

SS-Befehl unter Linux

Wie man Dateien in Linux rekursiv auflistet

So listen Sie Dateisysteme in Linux mit lfs auf

So listen Sie Festplatten unter Linux auf

So listen Sie Benutzer und Gruppen unter Linux auf

So listen Sie alle Benutzer einer Gruppe in Linux auf