Wie kann ich die Dateien in einem anderen (nicht aktuellen) Verzeichnis auflisten?

Wie kann ich die Dateien in einem anderen (nicht aktuellen) Verzeichnis auflisten?

Wenn ls den Inhalt des aktuellen Verzeichnisses auflistet, gibt es einen ähnlichen Befehl, der den Inhalt eines nicht aktuellen Verzeichnisses auflistet, ohne cd zu verwenden?

Antwort1

Geben Sie anschließend lseinfach den Pfad des Verzeichnisses ein, das Sie auflisten möchten, und Sie erhalten es. Stellen Sie sich vor, Sie befinden sich in Ihrem Home-Verzeichnis, möchten aber auflisten /etc. Führen Sie es einfach aus ls /etc, und Sie erhalten es aufgelistet.

Antwort2

lswerde das tun.

Die Syntax dafür lslautet:

 ls flags file-or-directory-names

Für das, was ich nennefile-or-directory-nameskönnen Sie Dateien im aktuellen Verzeichnis auflisten, um nur bestimmte Dateien aufzulisten. Beispielsweise ls -l foo barlistet nur Informationen zu foound auf bar(in Langform, wie ich das -lFlag angegeben habe). ls baz*golistet alle Dateien auf, deren Namen mit beginnen bazund mit enden go(sofern vorhanden).

Aber wenn Sie einVerzeichnisnamelistet lsden Inhalt vondieses Verzeichnisanstelle des aktuellen Verzeichnisses.

Um den Inhalt von aufzulisten /var/log, führen Sie einfach Folgendes aus:

ls /var/log

Wenn Sie einerelativPfad für das Verzeichnis eingibt, also einen, der nicht mit einem beginnt /, dann wird nach diesem Verzeichnis im aktuellen Verzeichnis gesucht (genau wie nach Dateien). Es werden aber trotzdem dieInhaltdes Verzeichnisses, wie Sie möchten.

Als Randbemerkung: Manchmal möchten Sie vielleicht nicht dieInhalteines Verzeichnisses, sondern listen Sie das Verzeichnis einfach so auf, wie eine Datei aufgelistet würde. Dazu können Sie das -dFlag übergeben. Dies wird beispielsweise /var/login Langform angezeigt (nicht in seinerInhalt, sondern /var/logsich selbst):

ls -ld /var/log

Antwort3

Nachdem ich die akzeptierte Antwort gesehen hatte, war ich immer noch nicht zufrieden. Woher kannte Daniel die Lösung? Natürlich habe ich die Manpage selbst gelesen und konnte immer noch nicht herausfinden, wie.

Die Manpage von lslautet:

Beschreibung: Listet Informationen zu den DATEIEN auf (standardmäßig das aktuelle Verzeichnis) ...

Da war nichts Nützliches. Dann habe ich im POSIX-Programmierhandbuch nachgesehen:

Für jeden Operanden, der eine Datei vom Typ „Verzeichnis“ benennt, soll ls die Namen der im Verzeichnis enthaltenen Dateien sowie alle angeforderten zugehörigen Informationen schreiben.

Diese Zeile erklärt das Verhalten des Befehls in der akzeptierten Lösung. Der FILEOperand lsKANN ein Verzeichnis sein und lslistet den Inhalt dieses Verzeichnisses auf. Genau das, was der OP wollte. ABER die Implementierung unter Linux kann von der hier gegebenen Spezifikation abweichen. Wir sind also auf dem richtigen Weg, aber noch nicht am Ziel.

Dann habe ich nach dem Handbuch des GNU- coreutilsPakets gesucht, zu dem lses gehört. Hier ist, was ich gefunden habe:

Bei Befehlszeilenargumenten ohne Optionen, bei denen es sich um Verzeichnisse handelt, listet ls standardmäßig den Inhalt der Verzeichnisse auf ...

Das erklärt es.

verwandte Informationen