
Als Teil meiner täglichen Entwicklungsaufgaben (auf einem Mac mit OS 10.12.3) führe ich tail -f *
in meinem Protokollordner vom Terminal aus. Der Ordner enthält etwa 15 verschiedene Dateien. Wie kann ich diesen Befehl ändern, um Änderungen analle Dateien bis auf einevon *
? Angenommen, die einzige Datei, die ich ausschließen möchte, *
heißt Repetitive.log
.
Entschuldigen Sie die sehr einfache Frage, ich habe danach gesucht und kein Duplikat gefunden. Erneut gepostet vonhttps://stackoverflow.com/questions/42815599/exclude-files-from-the-catchall-symbol
Antwort1
Wenn Sie als Shell verwenden bash
, setzen Sie die Umgebungsvariable GLOBIGNORE
auf eine durch Doppelpunkte getrennte Liste von Mustern, die SienichtÜbereinstimmung, wenn die Shell globbing durchführt,z.B
$ export GLOBIGNORE=Repetitive.log
$ export GLOBIGNORE=somefile:anotherfile:abc*
Aus man bash
:
GLOBIGNORE
A colon-separated list of patterns defining the set of
filenames to be ignored by pathname expansion. If a file-
name matched by a pathname expansion pattern also matches
one of the patterns in GLOBIGNORE, it is removed from the
list of matches.
Antwort2
xargs
ist dein Freund! Wenn nicht, find
kann auch helfen.
Hier sind vier Ansätze, die xargs
, find ... -exec
oder erweitertes Mustervergleich verwenden:
Nutzung xargs
über ls
undgrep
ls | grep -v Repetitive.log | xargs tail -f
Nutzung xargs
überfind
find . -maxdepth 1 ! -name Repetitive.log | xargs tail -f
find
Mit -exec
Argument verwenden
find . -maxdepth 1 ! -name Repetitive.log -exec tail -f {} \;
Verwenden Sie den erweiterten Musterabgleich inbash
Tolle Antwort, entnommen aushttps://stackoverflow.com/a/19429723/1862762.
shopt -s extglob
tail -f /directory/of/logfiles/!(Repetitive.log)
Notiz
Für diese Aufgabe würde ich die Methode bevorzugen xargs
, da sie eine Ausgabe von tail
mit den entsprechenden Dateinamen markiert liefert. Die Verwendung von ls
und grep
scheint intuitiver und leichter zu merken.