Tengo esta estructura de directorio:
~/tmp/globstar ɀ find dir -type f
dir/file.ext
dir/subdir1/file.ext
dir/subdir2/file.ext
y, con la globstaropción habilitada en Bash, puedo decir:
~/tmp/globstar ɀ ls -1 dir/**/*.ext
dir/subdir1/file.ext
dir/subdir2/file.ext
Mi pregunta es: ¿por qué está dir/file.extexcluido de esta lista?
El manual de Bash dice esto sobre globstar:
Si se establece, el patrón '**' utilizado en un contexto de expansión de nombre de archivo coincidirá con todos los archivos y cero o más directorios y subdirectorios. Si el patrón es seguido por un '/', solo coinciden los directorios y subdirectorios.
" Cero " en este párrafo me deja con la impresión de que dir/file.extdebería haberse incluido; a menos que espero que me falte algo.

ɀ?unicode ɀo Wikipediaɀes solo un carácter utilizado aquí para distinguir prompt. Algunos usuarios prefieren el personaje£o en€lugar de$:). Originalmente,ɀun carácter 'z' creado para una notación especial de idioma africano :-)Respuestas:
Supongo que eso se refiere solo al nivel del subdirectorio.
**sin/fósforostodos los archivos y directorios
cero o más subdirectorios
Pero no desaparece por completo.
**/significa que no hay archivos en el directorio de nivel más alto que**correspondan.Es necesario
dir/*.ext dir/**/*.ext.fuente
Esto funciona como esperaba en estas versiones de Bash que se proporcionan con las distribuciones enumeradas:
De hecho, las versiones enumeradas anteriormente son todo lo que probé. En otras palabras, no encontré una versión 4 de Bash donde no funciona. La opción
globstarse agregó en Bash 4.0 ver CAMBIOS . En versiones anteriores, el comandoshopt -s globstardebería devolver un error.Pruebas
1.
dir/**/*.extcoincidenciasdir/file.ext:2.
**/*.extpartidosfile.ext:Preparación del entorno para reproducir las pruebas anteriores:
fuente
shopt -s globstar.Me mira como si tuvieras / tuvieras globstar apagado. Se puede activar así:
No solo no coincidirá con cero subdirectorios, sino que tampoco coincidirá con dos subdirectorios:
Con globstar apagado, ** termina comportándose como *, por lo que
dir/**/*.extobtiene el mismo resultado quedir/*/*.extlo que a veces me hace pensar que Globstar está encendido
compruebe su configuración actual de globstar de esta manera:
fuente
shopt globstar.