44

名前が「SomeLongString」で始まるすべてのファイルをリストする必要があります。ただし、「SomeLongString」の場合は異なる場合があります。どのように?

私はzshを使用していますが、bashソリューションも歓迎します。

4

5 に答える 5

37

ZSH:

$ unsetopt CASE_GLOB

または、一般的に大文字と小文字を区別しないグロブを有効にしたくない場合は、さまざまな部分に対してのみ有効にすることができます。

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

これは、「somelongstring」で始まるすべてのファイルに一致します(小文字/大文字の任意の組み合わせ)。大文字と小文字を区別しないフラグは、括弧の間のすべてに適用され、複数回使用できます。詳細については、マニュアルzshexpn(1)をお読みください。

更新 ほとんど忘れてしまいました。これを機能させるには、拡張エンドグロブを有効にする必要があります。

setopt extendedglob
于 2008-10-01T12:50:20.507 に答える
35

バッシュ:

shopt -s nocaseglob
于 2008-10-01T10:11:26.537 に答える
16

このリストをどれだけ深くしたいかによってfind、この点に関して非常に多くのことを提供します:

find . -iname 'SomeLongString*' -maxdepth 1

これにより、現在のディレクトリ内のファイルのみが表示されます。ここで重要なのは、 の-iname代わりにパラメータです-name

于 2008-10-01T10:10:38.207 に答える
3

$ 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~
于 2011-10-01T04:11:23.097 に答える