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:bash
se expandió*foo*
porque coincidía, pero pasó*bar*
directamente porque no lo hizo. Lanullglob
opción le dirá a bash que resuelva patrones no coincidentes con la cadena vacía:fuente
zsh: no matches found
.no_nomatch
que desencadenar este comportamiento.Si desea
find
obtener la cadena sin expandir, puede citarla o proteger los comodines con barras invertidas.fuente