質問

名前が「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~
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top