bagaimana cara meniadakan ekspresi globsh zsh dengan benar?

18

Saya ingin daftar semua file tetapi yang berakhiran dengan owp: Karenanya saya mencoba:

  ls -l *.(^owp)
  zsh: unknown sort specifier
  ls -l *(^owp) 
  zsh: unknown sort specifier
  ls -l *[^o][^w][^p] # does not work either, missing some files

tidak ada yang berhasil. Bagaimana saya melakukannya dengan cara yang benar? .Zshrc saya memiliki "set extendedglob".

matematika
sumber

Jawaban:

27

Coba juga:

ls -l ^*.owp

(Yaitu cocok dengan apa pun kecuali polanya *.owp)

atau:

ls -l *~*.owp

(yaitu mencocokkan apa pun yang cocok dengan pola *tetapi tidak cocok *.owp)

Lihat man zshexpn=> FILENAME GENERATION=> Glob Operatorsuntuk informasi lebih lanjut tentang ini.


Diterapkan ()dalam pola glob adalah untuk kualifikasi glob, sedangkan Anda menginginkan operator glob.

Apa yang *.(^owp)dilakukan adalah:

  1. Cocokkan semua nama file yang diakhiri dengan titik
  2. jika mereka bukan pipa (^p), dan
  3. urutkan pertandingan (o)dengan " w" => "specifier pengurutan tidak dikenal"

Lihat man zshexpn=> FILENAME GENERATION=> Glob Qualifiersuntuk informasi lebih lanjut tentang ini.

peth
sumber
1
^ *. owp melakukan pekerjaan. whooa, untuk apa *. (^ owp) benar-benar :)
matematika
9
Bagi siapa pun yang tidak bisa menjalankan ini, Anda perlu mengatur extendedglobopsi dalam Zsh.
DBedrenko
7
@ DBedrenko: terima kasih! NB: dilakukan melaluisetopt extendedglob
Thomas M
1
Saya menemukan ini berguna sebagai ringkasan cepat untuk siapa saja yang tertarik pada kualifikasi glob.
menangkal