En Centos y Debian probé esto.
¿El * con el comando ls implica búsqueda recursiva?
Si empiezo a escribir el nombre de un directorio y presiono la pestaña, veo esto:
# ls /etc/rc<tab>
rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rc.local rcS.d/
Pensé que si ponía un asterisco en la ruta vería lo mismo pero en lugar de eso hice una búsqueda recursiva:
# ls /etc/rc*
/etc/rc.local
/etc/rc0.d:
K50netconsole K90network
/etc/rc1.d:
K50netconsole K90network
/etc/rc2.d:
K50netconsole S10network
/etc/rc3.d:
K50netconsole S10network
...
El comando dir de Windows simplemente me mostraría los directorios que coinciden con /etc/rc*. ¿Cómo puedo obtener este comportamiento desde ls (sin usar la tecla de tabulación)?
****Editar/Actualizar:
Bien, ahora entiendo que * es interpretado por bash en lugar del comando, pero ¿siempre se interpreta como "enumerar entradas de archivos y carpetas" o si lo uso en un contexto diferente hace algo más y, de ser así, hay algo grande? declaración if en bash que dice "si * se usa con rutas del sistema de archivos, devuelve nombres de archivos y carpetas, si * se usa con rpm (comorpm -qa publicación*) devolver nombres de paquetes, etc."
Respuesta1
Asterisk se expande antes de llegar al ls
comando, por lo que esto es equivalente a
ls /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d ...
que enumerará el contenido de cada directorio por separado.
Es posible que desee utilizar ls -d /etc/rc*
para suprimir la lista de archivos dentro de los directorios o utilizar un comando que solo muestre la expansión, como echo /etc/rc*
.
Respuesta2
De forma predeterminada, si invoca ls
con un argumento de directorio, muestra el contenido del directorio. Puede modificar ese comportamiento con la -d
opción. Deman ls
-d, --directory
list directory entries instead of contents, and do not derefer‐
ence symbolic links