我正在一个巨大的目录层次结构中寻找文件“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')"