Wie kann ich ls nur Dateien anzeigen lassen?

24

Ich denke, es muss eine Möglichkeit geben, dass ls nur Nicht-Verzeichnisse anzeigt, aber die Manpage macht es nicht offensichtlich

denktinbinär
quelle
Nicht sicher ls, aber man kann es leicht tun mit dem fileBefehl: file /directory/containing/the/files -maxdepth 1 -not -type d.
Henning Kockerbeck
1
Ein anderer Weg wäre, die Ausgabe von lsThrough zu filtern grep, so etwas wie ls -1F /directory/containing/the/files | grep -vE /$. Beachten Sie jedoch, dass das Parsen der Ausgabe von ls schwierig sein kann .
Henning Kockerbeck

Antworten:

37
ls -p | grep -v /

Verwenden Sie ls -pTells ls, um einen Schrägstrich an Einträge anzuhängen, die ein Verzeichnis sind, und verwenden Sie grep -v /Tells grep, um nur Zeilen zurückzugeben , die keinen Schrägstrich enthalten.

thomasrutter
quelle
Ich habe diese Antwort überprüft, weil sie meine Lieblingsantwort ist (während ich alle positiv bewertet habe), aber jetzt habe ich versucht, eine Möglichkeit zu finden, sie in Spalten zu
schreiben
"Sie können 1 Schalter für einspaltige Liste verwenden" Entschuldigung, ich habe versucht herauszufinden, was Sie damit meinten. Ich würde es begrüßen und ein Beispiel / eine Erklärung geben, wenn Sie möchten, ich weiß nur, was ein Schalter in Bezug auf C-Programmierung ist
thinksinbinary
@sdkks Sie benötigen den 1Schalter nicht , wenn Sie die Ausgabe weiterleiten, da in dieser Situation standardmäßig nur eine Spalte verwendet wird. Wenn es das ist, was du meinst.
Thomasrutter
@thinksinbinary nicht sicher, wie man es mehrspaltig macht, aber Sie könnten Ihre eigene Frage suchen oder stellen, und jemand wird es wissen.
Thomasrutter
7

Sie können dies versuchen:

find . -maxdepth 1 -not -type d

Und ordnen Sie dies einem speziellen Alias ​​zu.

Wenn Sie den lsBefehl jedoch unbedingt verwenden möchten, gehen Sie wie folgt vor:

ls -p | egrep -v /$

theeabhinavdas
quelle
6

Alternative:

ls -lAh | grep -v '^d'

Diese Methode wird in aufgelistet

  • -l Langes Listenformat
  • -A Zeigt fast alle an (versteckte Dateien anzeigen, aber nicht anzeigen .und ..)
  • -h Vom Menschen lesbare Dateigrößen

während grep

  • -v Keine passenden Datensätze anzeigen
  • Regular expressionFilter ^d- Diese beginnen mit dem Buchstaben d (für Verzeichnis) dhdrwxrwxr-x <some file details> <foldername>

Wenn Sie nicht jedes Mal etwas eingeben möchten, können Sie es zu einem Alias ​​für Ihr Bash / Shell-Profil machen.

sdkks
quelle
2

Ich habe in Ihrem (@thinksinbinary) Kommentar zu der Antwort von @thomasrutter gesehen, dass Sie sie in umgekehrter Reihenfolge und in Spalten ausdrucken möchten. Sie haben es wahrscheinlich schon herausgefunden oder sind weitergezogen, aber hier ist es:

ls -pr | grep -v / | column
  • -p fügt den Verzeichnisnamen den Schrägstrich ('/') hinzu
  • -r kehrt die Ausgabereihenfolge um
  • -v lässt grep eine inverse Suche durchführen, um alles außer den Verzeichnissen zu drucken ( alles, wo das '/', das -p enthält, nicht vorhanden ist )
  • " Spalte legt es in Spalten" - Captain Obvious
Levi Uzodike
quelle
1
Ich finde es cool, dass die Leute im Ubuntu-Forum noch nach langer Zeit Ihre Beiträge kommentieren und lesen. Ich wollte schon immer wieder in Linux einsteigen, um die Montage und Betriebssysteme zu erlernen, da dies unter Windows sehr viel schwieriger ist. Vielen Dank!
thinksinbinary
0
ls -F | grep -v /

Der obige Befehl zeigt Dateien an. Er enthält jedoch Symlinks, Pipes usw. Wenn Sie diese ebenfalls entfernen möchten, können Sie eines der unten genannten Flags verwenden.

ls -Ffügt den Dateinamen Symbole hinzu. Diese Symbole zeigen nützliche Informationen zu Dateien an.

ls -F | grep -Ev '/|@|*|=|>|\|'

Der obige Befehl zeigt nur Dateien an.

BarathVutukuri
quelle