Como posso pesquisar um nome curinga em todas as subpastas?

26

Como posso pesquisar um nome curinga em todas as subpastas? Qual seria o equivalente ao comando DOS: dir *pattern* /sem * nix?

Eduard Florinescu
fonte

Respostas:

40

Você pode usar find. Se, por exemplo, você desejasse encontrar todos os arquivos e diretórios contidos abcdno nome do arquivo, você poderia executar:

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

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, yashou tcshtê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 -ldserá executado sem argumentos, assim será listado .. Com algumas xargsimplementações, você pode usar a -ropção para solucionar isso.

Gilles 'SO- parar de ser mau'
fonte
o que shopt -s globstar faz?
capybaralet
@ user2429920 gnu.org/software/bash/manual/… e clique em gnu.org/software/bash/manual/bash.html#The-Shopt-Builtin e role para baixo até globstar.
Gilles 'SO- stop be evil'