1273 Stimmen

Auflistung nur Verzeichnisse mit ls in Bash?

Dieser Befehl listet Verzeichnisse im aktuellen Pfad auf:

ls -d */

Was genau bedeutet das Muster */ tun?

Und wie können wir den absoluten Pfad im obigen Befehl angeben (z. B. ls -d /home/alice/Documents ), um nur Verzeichnisse in diesem Pfad aufzulisten?

13voto

PHP Learner Punkte 661

Wenn ein verstecktes Verzeichnis nicht benötigt wird, um aufgelistet zu werden, biete ich es an:

ls -l | grep "^d" | awk -F" " '{print $9}'

Und wenn versteckte Verzeichnisse aufgelistet werden sollen, verwenden Sie:

ls -Al | grep "^d" | awk -F" " '{print $9}'

Oder

find -maxdepth 1 -type d | awk -F"./" '{print $2}'

10voto

DevWL Punkte 14388

Ls und awk (ohne grep)

Es ist nicht nötig, grep zu verwenden, da awk die Überprüfung von regularexpressino durchführen kann, so dass es ausreicht, dies zu tun:

ls -l | awk '/^d/ {print $9}'

wobei ls -l Dateien mit Berechtigungen auflisten
awk Filterausgang
'/^d/' regularexpresion, die nur nach Zeilen sucht, die mit einem Buchstaben beginnen d (als Verzeichnis) mit Blick auf die erste Zeile - permisions
{print} würde alle Spalten ausdrucken
{print $9} wird nur gedruckt 9. Spalte (Name) von ls -l Ausgabe

Sehr einfach und sauber

8voto

Vijay Gawas Punkte 89

Nur zur Auflistung Verzeichnisse :

ls -l | grep ^d

Nur zur Auflistung Dateien :

ls -l | grep -v ^d 

Oder Sie können auch so vorgehen:

ls -ld */

8voto

Raj RD Punkte 83

Versuchen Sie dies. Sie funktioniert für alle Linux-Distributionen.

ls -ltr | grep drw

7voto

torbatamas Punkte 1166

Ich fand diese Lösung am bequemsten, ich füge sie der Liste hinzu:

find * -maxdepth 0 -type d

Der Unterschied besteht darin, dass er kein ./ am Anfang hat und die Ordnernamen gebrauchsfertig sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X