Je pensais que le caractère générique *
dans la commande find . -name *foo*
était remplacé par bash, et pourtant la commande fonctionne à moins qu'elle ne *foo*
corresponde à quelque chose dans le répertoire courant, alors ce n'est pas le cas. C'est confu.
8
find . -name *foo*
par,find . -name '*foo*'
cela permettra aux correspondances génériques de fonctionner comme prévu.Réponses:
Si bash ne trouve pas de correspondance, il transmet la chaîne littérale à l'application avec
*
s non développé. Par exemple:bash
développé*foo*
parce qu'il correspond, mais passé*bar*
directement parce qu'il ne l'a pas fait. L'nullglob
option indiquera à bash de résoudre les modèles non correspondants à la chaîne vide à la place:la source
zsh: no matches found
.no_nomatch
déclencher ce comportement.Si vous souhaitez
find
obtenir la chaîne non développée, vous pouvez la citer ou protéger les caractères génériques avec des barres obliques inverses.la source