Les extglob
Shell-Option bietet Ihnen einen leistungsfähigeren Mustervergleich in der Befehlszeile.
Sie schalten ihn ein mit shopt -s extglob
und schalten Sie sie mit shopt -u extglob
.
In Ihrem Beispiel würden Sie das zunächst tun:
$ shopt -s extglob
$ cp !(*Music*) /target_directory
Die vollständig verfügbaren ext beendet Globus bing-Betreiber sind (Auszug aus man bash
):
Wenn die Shell-Option extglob mit dem buildin shopt aktiviert ist, werden mehrere erweiterte Mustervergleichsoperatoren erkannt. Eine Musterliste ist eine Liste von einem oder mehreren Mustern, die durch ein | getrennt sind. Zusammengesetzte Muster können aus einem oder mehreren der folgenden Teilmuster gebildet werden:
- ?(Muster-Liste)
Passt auf null oder ein Vorkommen der angegebenen Muster
- *(Muster-Liste)
Passt auf null oder mehr Vorkommen der angegebenen Muster
- +(Muster-Liste)
Entspricht einem oder mehreren Vorkommen der angegebenen Muster
- @(Muster-Liste)
Entspricht einem der angegebenen Muster
- !(Muster-Liste)
Passt auf alles außer auf eines der angegebenen Muster
Wenn Sie zum Beispiel alle Dateien im aktuellen Verzeichnis auflisten wollen, die nicht .c
o .h
Dateien, würden Sie das tun:
$ ls -d !(*@(.c|.h))
Natürlich funktioniert das normale Shell-Globing, so dass das letzte Beispiel auch so geschrieben werden könnte:
$ ls -d !(*.[ch])