ls Mustervergleich


7

Ich weiß, dass []das beim lsPattern Matching funktioniert :

$ ls
foo.c  foo.h
$ ls foo.[ch]
foo.c  foo.h

aber ich kann nicht finden, wo dies dokumentiert ist.

Ich würde gerne wissen, welche Syntax diesen entspricht:

$ ls
foo.asd  foo.qwe

Dies ist die beste Vermutung, die ich hatte : ls foo.[{asd}{qwe}]. Es hat nicht funktioniert.


4
Es ist nicht "Pattern Matching" von, lssondern "Shell Globbing"; Weitere Informationen finden Sie in der Shell-Dokumentation. lsbekommt nur zu sehen, was die Shell erweitert.
Janis

Antworten:


10

Ich denke, Sie suchen nach der Klammererweiterung {asd,qwe}:

$ ls foo.{asd,qwe}
foo.asd  foo.qwe

Das habe ich gesucht. @ Janis Kommentar half mir, Dokumentation zu finden, zB hier: linux.die.net/Linux-CLI/x11655.htm
Gauthier

Beachten Sie, dass dies kein Mustervergleich ist, sondern eine Klammererweiterung. Selbst wenn es für diesen speziellen Fall funktioniert, können Sie keine beliebigen Muster damit abgleichen.
Janis

@ Janis: Ich denke, OP sucht tatsächlich danach, die Beispiele auf der Frage legen dies auch nahe. Wahrscheinlich konnte er / sie die Abfrage nicht genug klären. Siehe OPs Kommentar oben.
heemayl

@heemayl; wie gesagt, es scheint für seine Bedürfnisse zu genügen. Aber in seiner Frage sprach er klar über "Pattern Matching" und "die Syntax, die passen würde".
Janis

Entsprechend: linux.die.net/Linux-CLI/x11655.htm gilt diese Klammererweiterung als Standard-Platzhalter oder Globbing-Muster. Ich bin mir nicht sicher, wie sich "Pattern Matching" von "Globbing Pattern" unterscheidet. Seltsamerweise man 7 globbeschreibt []aber nicht {}.
Gauthier

2

Das Globbing-Muster wäre ls foo.@(asd|qwe). Das funktioniert

  • out of the box in ksh;
  • in bash auch wenn "erweitertes globbing" mit aktiviert ist shopt -s extglob;
  • in zsh, wenn ksh-artige Globs mit aktiviert sind setopt ksh_glob.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.