2008-10-01 14 views

cevap

25

ZSH: Genel olarak küçük harf duyarsız globbing etkinleştirmek istemiyorsanız

$ unsetopt CASE_GLOB 

Ya da, sadece değişen parça için etkinleştirebilirsiniz:

$ print -l (#i)(somelongstring)* 

Bu, "somelongstring" ile başlayan herhangi bir dosyayla eşleşecektir (herhangi bir alt/büyük harf kombinasyonunda). Büyük/küçük harf duyarlı bayrağı, parantezler arasındaki her şey için geçerlidir ve birden çok kez kullanılabilir. Daha fazla bilgi için kılavuzu zshexpn(1) okuyun.

setopt extendedglob 
+4

BTW, çalışabilmesi için EXTENDED_GLOB'u izlemeliydim. –

+0

'setopt no_CASE_GLOB' nedir? – ksoo

10

bu girişi olmasını istediğiniz ne kadar derin bağlı olarak, find bu konuda oldukça fazla sunmaktadır:

find . -iname 'SomeLongString*' -maxdepth 1 

Bu yalnızca geçerli dizinde Size dosyaları verecektir. Burada önemli olan, -name yerine -iname parametresidir.

25

bash:

shopt -s nocaseglob 
+0

Teşekkür:

GÜNCELLEME Neredeyse işe bunun için globbing extendend hale getirmek zorundadır unuttum. Onu, dünyanın kendisinin bir parçası olarak belirtmenin bir yolu olduğunu umuyordum. Zsh kılavuzu böyle bir şeyden bahseder ama ben bunu anlayamadım. –

1

$ function i() { 
> shopt -s nocaseglob; $*; shopt -u nocaseglob 
> } 
$ ls *jtweet* 
ls: cannot access *jtweet*: No such file or directory 
$ i ls *jtweet* 
JTweet.pm JTweet.pm~ JTweet2.pm JTweet2.pm~ 
+0

** Bu işlevi güvenli bir şekilde iletmek için küreye alıntı yapmanız gerekir **. * * Jtweet * 'bir şeyle eşleşirse, işlev görmeden önce genişletilecektir. (Veya diğer 'shopt' ayarlarına bağlı olarak hata veya boş dize). İlginç bir fikir olsa da. Dizin içinde bir jtweet.pm bile olsa, çoğunlukla çalışacağını düşünüyorum * jtweet * ''. Bununla birlikte, glob olmayan argalarda veya globda boşluklar veya diğer özel karakterler ile ilgili birçok potansiyel sorun var. –

İlgili konular