Você pode combinar dois padrões (ou, mais geralmente, vários critérios) em find
.
find . -ipath '*sitesearch*' -ipath '*demo*'
ou se você preferir sintaxe de regex
find . -iregex '.*sitesearch.*' -iregex '.*demo.*'
" ls
com o caminho completo em cada linha" (além de percorrer diretórios recursivamente, o que é evidentemente necessário aqui) seria find
. Embora você possa executar find | grep -i demo | grep -i sitesearch
, fazer tudo com find
provavelmente será visivelmente mais rápido.
Se você fizer isso muito, pode torná-lo uma função (coloque-o em ~/.kshrc
ou ~/.bashrc
ou ~/.zshrc
):
findallof () {
typeset -a pred
pred=(.)
typeset x
for x do
pred=("${pred[@]}" -ipath "*$x*")
done
find "${pred[@]}"
}
Note também que você pode procurar arquivos pelo nome com locate
(verifique a página do manual em seu sistema como existem várias implementações, mesmo no Linux).
locate -i sitesearch | grep -i demo
Isso pode ser mais rápido do que procurar em uma árvore de diretórios grande, porque locate
consulta um índice (embora as pesquisas não diferenciam maiúsculas de minúsculas tendem a não ser tão rápidas). No entanto, o índice é normalmente reconstruído apenas todas as noites, portanto, ele não mostrará arquivos criados hoje. Arquivos que não estão em um diretório legível publicamente podem ou não ser indexados dependendo da implementação (verifique se /usr/bin/locate
é um binário raiz setuid: se estiver, arquivos privados são indexados e o comando locate
mostra apenas os arquivos você pode acessar).