In einer Menge/Aufzählung, etwas ausschließen (EXCEPT)

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

In einer Menge/Aufzählung, etwas ausschließen (EXCEPT)

Beitrag von pangu » 17.02.2012 09:14:29

Moin moin,

ich wollte mal fragen, ob und wie das möglich wäre, ich gebe z.B. ein:

tail -f /test/logs/fehler.log /test2/log/irgendwas.log /var/log/*

Ich will aber vom /var/log nicht ALLES haben, sondern würde jetzt gerne sagen wir mal die kern.log und die user.log darin ausschließen wollen. Geht das irgendwie?

Klar kann ich jede einzelne Datei in /var/log/blabla.log einzeln auflisten, aber das will ich ja nicht. Nehmen wir sogar als Extrembeispiel, dass ich in einem Verzeichnis 1000 Dateien auflisten möchte, aber davon eben 3 bestimmte NICHT.

Kann man so etwas, evtl. mit Regex in der Kommandozeile mit dem Befehl kombinieren? Wie macht man das?
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

uname
Beiträge: 12044
Registriert: 03.06.2008 09:33:02

Re: In einer Menge/Aufzählung, etwas ausschließen (EXCEPT)

Beitrag von uname » 17.02.2012 09:54:01

Leider bekomme ich es nicht hin als [FILE]-Parameter einen regulären Ausdruck zu übergeben. Somit kann man es vielleicht so versuchen. Das "| strings" habe ich angefügt, da bei mir die Sonderzeichen in einigen Logdateien die Konsole zerhauen.

Code: Alles auswählen

tail -f `ls |grep "[^kernel|user].log$"` |strings
Die Dateien mit nicht darstellbaren Zeichen kannst du so ermitteln:

Code: Alles auswählen

file `ls |grep "[^kernel|user].log$"` 
Irgendwie gab es wohl eine tail-Version, die mehrere Dateien parallel verwalten konnte. Aber das war ja nicht die Frage.

Liffi
Beiträge: 2305
Registriert: 02.10.2004 01:33:05

Re: In einer Menge/Aufzählung, etwas ausschließen (EXCEPT)

Beitrag von Liffi » 17.02.2012 10:21:28

Mit der zsh in /var/log/:

Code: Alles auswählen

tail -f  *.log~(Xorg.|alternatives)*
Ruft tail -f für alle .log Dateien auf, die nicht mit "Xorg." oder "alternatives" anfangen.

EDIT::
Außerhalb von /var/log/ ist es dann:

Code: Alles auswählen

tail -f /var/log/*.log~/var/log/(Xorg|alternatives)*
EDIT2::
Falls dann noch Verzeichnisse drin sind, die auf .log enden, die man aber auch nicht drin haben möchte:

Code: Alles auswählen

tail -f /var/log/*.log~/var/log/(Xorg|alternatives)*(.)

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: In einer Menge/Aufzählung, etwas ausschließen (EXCEPT)

Beitrag von pangu » 17.02.2012 14:49:33

@uname: funzt leider nicht :/

@Liffi: und wie würde ich das in der BASH machen? gibt's da auch 'ne Möglichkeit?
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Liffi
Beiträge: 2305
Registriert: 02.10.2004 01:33:05

Re: In einer Menge/Aufzählung, etwas ausschließen (EXCEPT)

Beitrag von Liffi » 17.02.2012 15:06:45

pangu hat geschrieben: @Liffi: und wie würde ich das in der BASH machen? gibt's da auch 'ne Möglichkeit?
Mit extglob vielleicht, aber ich kenne mich nicht soo sehr mit der Bash aus.

Code: Alles auswählen

ls /var/log/!(Xorg*|alternatives*).log
scheint bei mir aber das richtige zu machen.

EDIT:: Aber Vorsicht:
Die Bash wertet Metazeichen manchmal je nach LANG komisch aus:
viewtopic.php?f=29&t=134306&p=867343#p867343

Antworten