2012-04-08 11 views
8

Ich habe Dateien a1 a2 a3 b1 b2 b3 und ich muss a2 und b2 aus der Liste mit nur ls Befehl ausschließen.UNIX 'ls' ausschließen Platzhalter

+0

Wenn ich ls --ignore = "* 2", es funktioniert (aber vorausgesetzt, ich habe andere Dateien), wenn ich ls -a * -b * --ignore = "* 2" eingeben, werden keine Dateien – user1078719

Antwort

5

Try this:

$ ls [a-b][13] 
a1 a3 b1 b3 

Oder

$ shopt -s extglob 
$ ls !(*2) 
a1 a3 b1 b3 
2

Liste einfach die gewünschten Dateien:

ls a1 a3 b1 b3 
+1

+1 ausgeschlossen, da dies die einzige Möglichkeit ist, die Bedingung "nur mit ls" zu erfüllen. Jeder Versuch, die Argumentliste mithilfe von Shell-Globs zu manipulieren, verwendet die Shell. (Obwohl Sie die Shell zum Ausführen von Skripten verwenden, ist diese spezielle Einschränkung möglicherweise schlecht gestellt.) –

+0

@WilliamPursell, meine Gedanken genau. –

2

mit ls Versuchen und

ls -1 | grep -viw "a2\|b2" 

Achten Sie nach ls eine Put-1 (die Nummer eins) und nicht den Buchstaben "l" grep. Manchmal macht die Schriftart sie verwirrend.

14

Verwendung --ignore Option

ls --ignore=[ab]2 
+2

Aber auf welcher Version von 'ls' funktioniert die Option' --ignore'? Auf meinem MAC existiert es nicht. – dash1e

+0

GNU Coreutils 8.5 – bouzuya

+0

Ich benutze Fefora13, wenn es hilft. – user1078719