web-dev-qa-db-ja.com

コマンドを検索:大文字と小文字を区別する方法?

巨大なディレクトリ階層で「WSFY321.c」ファイルを探しています。
通常は GNU find を使用します:find . -name "WSFY321.c"
しかし、大文字と小文字のどちらか、または両方が混在している可能性があります。

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

185
Nicolas Raoul

GNU findの最近のバージョンには-inameフラグ、大文字と小文字を区別しない名前検索用。

find . -iname "WSFY321.c"
236
Lars Rohrbach

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

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')"
1
Drew Beres