¿Cómo puedo buscar un nombre comodín en todas las subcarpetas?

26

¿Cómo puedo buscar un nombre comodín en todas las subcarpetas? ¿Cuál sería el equivalente del comando DOS: dir *pattern* /sen * nix?

Eduard Florinescu
fuente

Respuestas:

40

Puedes usar find. Si, por ejemplo, desea encontrar todos los archivos y directorios que tenían abcden el nombre del archivo, puede ejecutar:

find . -name '*abcd*'
Ryan A.
fuente
12

Zsh:

ls -ld -- **/*abcd*

Ksh93:

set -o globstar     # put this line in your ~/.kshrc
ls -ld -- **/*abcd*

Golpe ≥4:

shopt -s globstar   # put this line in your ~/.bashrc
ls -ld -- **/*abcd*

Yash

set -o extendedglob # put this line in your ~/.yashrc
ls -ld -- **/*abcd*

tcsh:

set globstar
ls -ld -- **/*abcd*

pez:

ls -ld -- **abcd*

(cuidado con algunas de esas conchas seguirá enlaces simbólicos al descender el árbol de directorios, algunos de los que no les gusta zsh, yasho tcshtener ***/*abcd*que hacerlo).

Portátil (excepto para sistemas muy antiguos; OpenBSD tardó mucho tiempo pero finalmente es compatible exec … +desde 5.1):

find . -name '*abcd*' -exec ls -ld {} +

No es POSIX pero funciona en * BSD, Linux, Cygwin, BusyBox:

find . -name '*abcd*' -print0 | xargs -0 ls -ld

Tenga en cuenta que, excepto en algunos BSD, si no se encuentra un archivo coincidente, ls -ldse ejecutará sin argumentos, por lo que se enumerará .. Con algunas xargsimplementaciones, puede usar la -ropción para evitar eso.

Gilles 'SO- deja de ser malvado'
fuente
¿Qué hace shopt -s globstar?
carpincho
@ user2429920 gnu.org/software/bash/manual/… y haga clic en gnu.org/software/bash/manual/bash.html#The-Shopt-Builtin y luego desplácese hacia abajo globstar.
Gilles 'SO- deja de ser malvado'