検索コマンド:大文字と小文字を無視する方法は?

検索コマンド:大文字と小文字を無視する方法は?

私は巨大なディレクトリ階層で "WSFY321.c"ファイルを探しています。
通常私GNUを探すfind . -name "WSFY321.c"
しかし大文字と小文字はわかりません。大文字でも、小文字でも、2 つが混在している場合もあります。

このファイルを見つける最も簡単な方法は何ですか?
それより良いものがありますかfind . | grep -i "WSFY321.c"

答え1

最新バージョンのGNUには、大文字と小文字を区別しない名前検索のためのフラグがfindあります。-iname

find . -iname "WSFY321.c"

答え2

この機能でGNU findまたは他のバージョンのfindを使用してください。

find . -iname 'WSFY321.c'

他のバージョンの場合:

find . -name '[Ww][Ss][Ff][Yy]321.[Cc]'

または遅いが入力しやすいトレードオフです。

find . -name '????321.c' | grep -i '/WSFY[^/]*$'

またはzshから:

print -rl -- **/(#i)WSFY321.c

答え3

macOS用の2つのソリューション:

GNUの使用find:

brew install findutils --with-default-names
# restart Terminal
find . -iname 'WSFY321.c'

GNUの使用sed:

brew install gnu-sed --default-names
# restart Terminal
find -name "$(sed 's|\([[:alpha:]]\)|[\U\1\L\1]|g' <<<'WSFY321.c')"

関連情報