查找命令:如何忽略大小写?

查找命令:如何忽略大小写?

我正在一个巨大的目录层次结构中寻找文件“WSFY321.c”。
通常我会使用GNU 查找find . -name "WSFY321.c"
但我不知道大小写,它可能是大写,小写,或两者的混合。

找到该文件的最简单方法是什么?
还有比 更好的吗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 的两种解决方案:

使用 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')"

相关内容