Wie erhalte ich eine Linux-Verzeichnisliste für Dateien, die mit einem bestimmten Buchstaben beginnen und nicht in Unterverzeichnisse absteigen?

17

Angenommen, Sie befinden sich in einem Verzeichnis, das viele Dateien und viele Unterverzeichnisse enthält.

Sie möchten eine Verzeichnisliste aller Dateien erhalten, die mit dem Buchstaben "d" beginnen. Du tippst

ls d*

und was Sie zurückerhalten, sind hauptsächlich Dateien in Unterverzeichnissen (insbesondere Dateien in Unterverzeichnissen, die mit "d" beginnen).

Wie listen Sie nur die Dateien und Verzeichnisnamen in Ihrem aktuellen Verzeichnis auf?

dggoldst
quelle

Antworten:

31

Ah, ich habe es gerade in der 6. Lesung der Manpage gefunden. Es ist der nicht so vernünftig benannte "Verzeichnis" -Parameter

ls -d d* 
dggoldst
quelle
6
Sie haben nur 29 Sekunden gebraucht, um die Manpage erneut zu lesen und diese Antwort aufzuschreiben? Das geht schnell :-)
balpha
1
Außerdem zeigt ls -dd * / nur die Verzeichnisse an.
INNAM
6
balpha - Ich habe es entdeckt, bevor ich die Frage abgeschickt habe, und dann festgestellt, dass ich, wenn ich so lange brauchte, um das herauszufinden, einem zukünftigen Sucher genauso gut helfen könnte, das q und ein hier zu posten.
dggoldst
3
Meinetwegen; daran ist nichts auszusetzen.
Balpha
1
Und doch, CppLearner, funktioniert es tatsächlich. Versuch es.
Dggoldst
10

Ich glaube eine andere interessante Lösung zu sein,

ls | grep ^d

Bietet die Flexibilität regulärer Ausdrücke.

Kuer
quelle
3
Und die Komplexität regulärer Ausdrücke! ;-)
Chris Nava
1
Das ist eine interessante Lösung, und ich mag die Idee, reguläre Ausdrücke zu verwenden, wenn Sie zusätzliche Parameter zu ls hinzufügen, wird sie jedoch brechen. ZB "ls -l | grep ^ d"
dggoldst
Richtig, aber nicht alle Parameter. ls -a | grep "^ \." würde alle "versteckten" Dateien drucken.
Kuer,
andere ls flagsfunktionieren bei diesem Ansatz nicht. zB ls -ltr | grep ^dfunktioniert nicht. während die in @dggoldst vorgeschlagene Antwort dies tut.
Hitesh Israni
3

finden . -maxtiefe 1 -name d * -Typ f

Okay, hier zu finden ist ein bisschen übertrieben. Nur ein bisschen.

James Polley
quelle
1
Aber es hat mir geholfen , eine Liste aller direkten Verzeichnisse von einem bestimmten Benutzer: find /home/ -maxdepth 1 -type d -user www-data. Also danke und +1
Cyril N.
1

ls -ld: Es wird die Liste der Verzeichnisse angezeigt, ohne in Unterverzeichnisse abzusteigen.

Beispiel:

ls -ld Cust*
Dieser Befehl enthält eine Liste der Dateien und Verzeichnisse, die mit beginnen Cust.

Chelladurai
quelle
1
Dies entspricht im Wesentlichen der von der Fünfjährigen akzeptierten Antwort.
Scott