ls -d *e*
gibt alle Dateien aus, die irgendwo ein „e“ enthalten. Aber das Gegenteil, ls -d *[!e]*
scheint nicht zu funktionieren. Warum genau ist das so?
liegt es daran, dass ls
nimmt *
als eigenes Argument und erweitert alle Dateien?
Ich verstehe, dass ich Folgendes tun kann:ls -d !(*e*)
(in Bash mit extglob
set oder in ksh).
Akzeptierte Antwort:
Was dieser Glob tatsächlich tut, ist, eine beliebige Anzahl von Zeichen abzugleichen, dann ein einzelnes Zeichen außer einem e, dann eine beliebige Anzahl von Zeichen. Es passt zu jeder Datei mit einem Namen, der nicht vollständig aus e besteht.