zsh / bashの大文字と小文字を区別しないグローブ
質問
名前が「SomeLongString」で始まるすべてのファイルをリストする必要があります。ただし、「SomeLongString」のケースはさまざまです。方法は?
zshを使用していますが、bashソリューションも歓迎します。
解決
ZSH:
$ unsetopt CASE_GLOB
または、大文字と小文字を区別しないグロビングを一般的に有効にしたくない場合は、さまざまな部分に対してのみ有効にできます:
$ print -l (#i)(somelongstring)*
これは、" somelongstring"で始まるすべてのファイルに一致します。 (小文字/大文字の任意の組み合わせで)。大文字と小文字を区別しないフラグは、括弧で囲まれたすべてに適用され、複数回使用できます。詳細については、マニュアル zshexpn(1)
を参照してください。
更新 ほとんど忘れてしまいましたが、これを機能させるには、extendend globbingを有効にする必要があります:
setopt extendedglob
他のヒント
bash:
shopt -s nocaseglob
このリストをどの程度深くしたいかによって、 find
は非常に多くの機能を提供します
この点で:
find . -iname 'SomeLongString*' -maxdepth 1
これは、現在のディレクトリ内のファイルのみを提供します。ここで重要なのは
-name
の代わりに -iname
パラメータ。
$ 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~
所属していません StackOverflow