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.