Como posso pesquisar um nome curinga em todas as subpastas? Qual seria o equivalente ao comando DOS: dir *pattern* /s
em * nix?
Você pode usar find
. Se, por exemplo, você desejasse encontrar todos os arquivos e diretórios contidos abcd
no nome do arquivo, você poderia executar:
find . -name '*abcd*'
Zsh:
ls -ld -- **/*abcd*
Ksh93:
set -o globstar # put this line in your ~/.kshrc
ls -ld -- **/*abcd*
Festança ≥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*
peixe:
ls -ld -- **abcd*
(cuidado com algumas dessas conchas vai seguir os links ao descer da árvore de diretórios, alguns daqueles que não gostam zsh
, yash
ou tcsh
têm ***/*abcd*
de fazê-lo).
Portátil (exceto para sistemas muito antigos; o OpenBSD demorou muito tempo, mas finalmente suporta exec … +
desde o 5.1):
find . -name '*abcd*' -exec ls -ld {} +
Não é POSIX, mas funciona em * BSD, Linux, Cygwin, BusyBox:
find . -name '*abcd*' -print0 | xargs -0 ls -ld
Observe que, exceto em alguns BSDs, se nenhum arquivo correspondente for encontrado, ls -ld
será executado sem argumentos, assim será listado .
. Com algumas xargs
implementações, você pode usar a -r
opção para solucionar isso.
globstar
.