Wenn ich den ls
Befehl mit der Option verwende -l
, gibt die erste Buchstabenfolge die Informationen zu jeder Datei an, und der erste Buchstabe in dieser Zeichenfolge gibt den Dateityp an. ( d
= Verzeichnis, -
= Standarddatei, l
= Link usw.)
Wie kann ich die Dateien nach diesem Anfangsbuchstaben filtern?
Antworten:
Sie können alles außer Verzeichnissen auf folgende
grep
Weise herausfiltern :Das
^
zeigt an, dass sich das Muster am Anfang der Zeile befindet. Ersetzen Sied
mit-
,l
etc., soweit zutreffend.Sie können natürlich auch andere Befehle verwenden, um direkt nach bestimmten Typen zu suchen (z. B.
find . -maxdepth 1 -type d
) oderls -l | sort
ähnliche Typen anhand dieses ersten Zeichens zu gruppieren. Wenn Sie jedoch filtern möchten, sollten Siegrep
nur die entsprechenden Zeilen aus der Ausgabe auswählen.quelle
ls -lL
.-L
Folgen Sie symlinks, um anzuzeigen, ob es mit einem Verzeichnis oder einer Datei verknüpft ist.Wenn Sie alle Ausgaben anzeigen möchten, aber Dateien ähnlichen Typs zusammen aufgelistet haben, können Sie die Ausgabe nach dem ersten Zeichen jeder Zeile sortieren:
quelle
Der Befehl
ls
behandelt Dateinamen , die in den Verzeichnisdatenstrukturen aufgezeichnet sind. Es kümmert sich also nicht wirklich um die Datei selbst, einschließlich des "Typs" einer Datei.Ein Befehl, der sich besser für die Bearbeitung von Dateien eignet , nicht nur für die Namen
find
. Es gibt eine Option, die Ihre Frage zum Filtern der Liste nach Dateityp direkt beantwortet.Dies gibt eine Auflistung des aktuellen Verzeichnisses, ähnlich wie
ls -l
:Standardmäßig werden
find
Verzeichnisse rekursiv aufgelistet, was deaktiviert wird, indem die Suchtiefe auf 1 begrenzt wird.Sie können das weglassen
.
, aber ich habe es eingefügt, um anzuzeigen, dass die Verzeichnisse vor den Optionen aufgelistet werden müssen.Mit
-type
können Sie nach Dateityp filtern, der alsf
oderd
für einfache Dateien oder Verzeichnisse ausgedrückt wird :Es gibt andere Filterwerte für
-type
, insbesonderel
für symbolische Links.Beachten Sie, dass es bei Symlinks eine Komplikation
gibt : In diesem Fall gibt es zwei Dateitypen:
l
einen Symlink und so etwas wief
den Typ der verknüpften Datei. Es gibt Optionen, mit denen Sie festlegen können, wie Sie damit umgehen möchten.Von
man find
:und relevant für den Umgang mit symbolischen Links:
und
quelle
Wenn Sie die Ordner aus den anderen Dateitypen bestellen möchten, können Sie dies tun
Ansonsten muss man die Ausgabe von ls -l durch sort oder grep leiten, wie von Anthon beantwortet
quelle
awk fängt alles ab, was mit d beginnt. Da d für Verzeichnis steht, müssen Sie das letzte Feld drucken, um den Verzeichnisnamen aufzulisten
quelle
Dadurch wird das Ergebnis nach der alphabetischen Reihenfolge der einzelnen Ergebnisse sortiert. Wenn das erste Zeichen das gewünschte Kriterium ist, ist es das. Wenn Sie nur die Dateinamen benötigen, können Sie versuchen:
Oder etwas Ähnliches (dieser Befehl sortiert und teilt dann jede Zeile mit dem Leerzeichen und gibt dann die zweite Gruppe zurück.
quelle