Ist es möglich, mit "ls -l *" eine Ausnahme hinzuzufügen?

Ist es möglich, mit "ls -l *" eine Ausnahme hinzuzufügen?

Ist es beispielsweise möglich, Folgendes zu tun: ls -l *den Inhalt eines gesamten Verzeichnisses auszudrucken und eine Ausnahme hinzuzufügen, test.cpp um beispielsweise alle Dateien außer den auszudrucken test.cpp.

Antwort1

Sie können es mit einem Glob tun, wenn Sie extglobes aktiviert haben. Sie können es aktivieren mit:

shopt -s extglob

Und Sie können es wie folgt verwenden:

ls -l !(test.cpp)

und es kann auch anders verwendet werden:

ls -l !(*.jpg) # list all files that don't have .jpg extensions

Da es sich um einen Shell-Glob handelt, kann er auch mit anderen Befehlen verwendet werden. Ein Nebeneffekt ist jedoch, dass alle Unterverzeichnisse explizit aufgelistet werden, was bedeutet, dass lssie auch aufgelistet werden. Dies lässt sich jedoch leicht mit folgendem Befehl beheben:

ls -ld !(test.cpp)

Antwort2

Der klassische (naive?) Weg, dies zu tun, wäre

  ls -l * | grep -v test.cpp

Wie Lamar jedoch bemerkte, lsbietet GNU Optionen zum Ignorieren bestimmter Dateinamen

  ls -l -I test.cpp *

Hinweis ls -l *listet Dateien im aktuellen Verzeichnis aufund Dateien in Unterverzeichnissen der 1. Ebene. Sie haben vielleicht gemeint, ls -lohne die*

verwandte Informationen