Pensé que el comodín *en el comando find . -name *foo*se reemplaza por bash, y sin embargo, el comando funciona a menos que *foo*coincida con algo en el directorio actual, entonces no lo hace. Es confuso.
bashse expandió *foo*porque coincidía, pero pasó *bar*directamente porque no lo hizo. La nullglobopción le dirá a bash que resuelva patrones no coincidentes con la cadena vacía:
find . -name *foo*confind . -name '*foo*', permitirá que las coincidencias con comodines funcionen como se esperaba.Respuestas:
Si bash no puede encontrar una coincidencia, pasa la cadena literal a la aplicación con
*s sin expandir. Por ejemplo:bashse expandió*foo*porque coincidía, pero pasó*bar*directamente porque no lo hizo. Lanullglobopción le dirá a bash que resuelva patrones no coincidentes con la cadena vacía:fuente
zsh: no matches found.no_nomatchque desencadenar este comportamiento.Si desea
findobtener la cadena sin expandir, puede citarla o proteger los comodines con barras invertidas.fuente