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".

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.