¿Cómo puedo buscar un nombre comodín en todas las subcarpetas? ¿Cuál sería el equivalente del comando DOS: dir *pattern* /s
en * nix?
Puedes usar find
. Si, por ejemplo, desea encontrar todos los archivos y directorios que tenían abcd
en el nombre del archivo, puede ejecutar:
find . -name '*abcd*'
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
, yash
o tcsh
tener ***/*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 -ld
se ejecutará sin argumentos, por lo que se enumerará .
. Con algunas xargs
implementaciones, puede usar la -r
opción para evitar eso.
globstar
.