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 extglob
es 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 ls
sie 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, ls
bietet 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 -l
ohne die*