2016-07-01 24 views
0

Ich benutze Latex oft und möchte einen ls-Alias ​​erstellen, der alle von pdflatex erzeugten zusätzlichen Dateien mit Ausnahme von .tex und .pdf ausschließt. Die Verwendung eines einzelnen Musters mit der Option "^" funktioniert, aber wenn ich mehrere Muster einfüge, wird jedes als ein einzelner Befehl ausgeführt, mit dem Ergebnis, dass die Dateien, die nicht mit jedem Muster übereinstimmen, mehrfach aufgelistet sind.Wie kann ich mehrere Muster mit einem einzigen ls-Befehl (in zsh) weglassen?

Gibt es eine Möglichkeit, mehrere Muster auf einmal mit einem einzigen Befehl in zsh zu überspringen?

Antwort

0

Sie könnten nur

ls --hide=*.aux --hide=*.log

Aber denken Sie daran, dieser Ausdruck Anpassung nicht regex ist. Es ist globbing.

+0

Nicht alle Versionen von 'ls' unterstützen' --hide'. – chepner

1

Stellen Sie sicher, dass KSH_GLOB aktiviert ist.

% setopt KSH_GLOB 
% touch foo.{tex,aux,log,pdf}  
% ls foo.!(aux|pdf) 
foo.pdf foo.tex 
0

Sie können Gruppenmuster mit (...|...) und gruppierte Muster negiert mit ^, von denen die letzte EXTENDED_GLOB eingestellt werden muss. Zum Beispiel:

ls ^*.(aux|log) 

Dies wird passend *.aux oder *.log alles andere als Dateien mit Namen übereinstimmen. Weitere Ausschlussmuster können mit zusätzlichen | verkettet werden:

ls ^*.(aux|log|toc|dvi)