GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Zeigt `ls -d *[!e]*` alle Dateien an, anstatt alle Dateien wegzulassen, die ein E enthalten?

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.


Linux
  1. Wie deinstalliere ich ein Paket (einschließlich aller mitgelieferten zusätzlichen Dateien) mit yum (oder rpm) vollständig?

  2. Wie finde ich alle Dateien, die *nicht* für Gruppen beschreibbar sind?

  3. Wie kann ich alle Dateien, die nicht gezippt sind, rekursiv bzip2?

  4. So finden Sie Dateien, die eine bestimmte Suchzeichenfolge nicht enthalten

  5. Wie zeige ich Dateinamen an, die zwei Zeichen enthalten und eines davon c ist?

Verschieben Sie alle Dateien bis auf eine

Keine X11-DISPLAY-Variable - was bedeutet das?

Zeigt zwei Dateien nebeneinander an

Der Befehl 'ls -d' zeigt keine Verzeichnisse an. Gibt es eine Möglichkeit, 'ls' dazu zu bringen, nur Verzeichnisse anstelle von Dateien und Verzeichnissen anzuzeigen?

Alle Dateien in Unterverzeichnissen kopieren und umbenennen statt überschreiben

grep, um Dateien zu finden, die eine Zeichenfolge enthalten, die länger als x Zeichen ist?