web-dev-qa-db-fra.com

Commande Find: comment ignorer la casse?

Je recherche le fichier "WSFY321.c" dans une énorme hiérarchie de répertoires.
Habituellement, j'utiliserais GNU find : find . -name "WSFY321.c"
Mais je ne connais pas le cas, il pourrait être en majuscules, en minuscules ou un mélange des deux.

Quelle est la façon la plus simple de trouver ce fichier?
Y a-t-il quelque chose de mieux que find . | grep -i "WSFY321.c"?

185
Nicolas Raoul

Les versions récentes de GNU find ont un -iname flag, pour les recherches de noms non sensibles à la casse.

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

Avec GNU find, ou d'autres versions de find qui l'ont:

find . -iname 'WSFY321.c'

Avec d'autres versions:

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

Ou un compromis plus lent mais plus facile à taper:

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

Ou en zsh:

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

Deux solutions pour macOS:

Utilisation de GNU find:

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

Utilisation de 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