Ejecute `ls` de forma recursiva con comodines

Ejecute `ls` de forma recursiva con comodines

Estoy intentando encontrar todos los archivos de proyecto de un tipo de archivo en particular con:

ls -ltR *.mb

Sé que hay los archivos que quiero en varias carpetas, pero no obtengo resultados. ¿Qué hice mal?

Respuesta1

lsno coincide con los patrones. Simplemente enumera los archivos o carpetas en los argumentos de entrada. *.mbes expandido por el caparazónantespasando a ls, por lo tanto, si no hay archivos nombrados *.mben el directorio actual, no se generará nada; de lo contrario, solo se generarán los archivos en el directorio actual

La forma estándar de enumerar archivos de forma recursiva es utilizarfind

find . -name '*.mb' -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '

De esta manera puede personalizar el formato de la lista de salida como desee. Ver:Listar archivos por fecha de última edición


Una forma alternativa es utilizarglobstarque se puede habilitar conshopt -s globstar

ls -ltR **/*.mb

El primero **/coincidirá con cualquier ruta de subdirectorio arbitraria. Luego *.mbhaga coincidir sus archivos en esos directorios

  • estrella globular

    Si se establece, el patrón **utilizado en un contexto de expansión de nombre de archivo coincidirá con todos los archivos y con cero o más directorios y subdirectorios. Si el patrón va seguido de /, solo coinciden los directorios y subdirectorios.

https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html

Respuesta2

@phuclv tiene dos buenas opciones. Cuando necesito hacer algo similar, normalmente canalizo la salida de ls a grep de esta manera:

ls -ltR | grep .*\.mb

esto envía la salida de ls a la entrada de grep en lugar de enviarla a stdout, y luego grep genera solo las líneas que contienen al menos una coincidencia para la expresión regular.

La expresión regular

.*\.mb

se puede explicar como:

.: match any character
*: preceding character or group should appear 0 or more times
\.mb: literally .mb

información relacionada