Como posso pesquisar diretórios começando com uma determinada letra?

7

Como posso pesquisar em diretórios começando com uma certa letra com o comando Linux find.

Por exemplo, eu quero pesquisar todos os diretórios começando com a letra a para um arquivo ou diretório começando com b .

    
por bing 08.12.2009 / 01:01

3 respostas

10

Tente encontrar em um achado:

find . -type d -name "a*" -exec find {} -name "b" \;

A partir do diretório atual ( . ), o find procurará todos os diretórios que começam com a letra recursivamente. Para cada diretório encontrado, ele procurará dentro dele por um arquivo chamado b.

Se você quiser que ele olhe apenas nas pastas que começam com a e nenhum diretório nessas pastas a * , use maxdepth:

find . -type d -name "a*" -exec find {} -maxdepth 1 -name "b" \;

para se livrar de erros:

find . -type d -name "a*" 2> /dev/null -exec find {} -maxdepth 1 -name "b" \;
    
por 08.12.2009 / 01:10
1

Apenas uma atualização rápida para as pessoas que podem acabar nesta questão.

Além da solução John T fornecida, também descobri que você pode excluir diretórios usando o comutador de remoção (deve ter lido as páginas do manual mais cedo, hehe.)

Então, por exemplo, se eu quiser pesquisar todos os diretórios por arquivo ou diretório "b", exceto os diretórios que começam com um "a", eu posso fazer isso

find . -path 'a*' -prune -o -name "b" -print

bing

    
por 09.12.2009 / 11:27
1

você também pode usar find -regex ...

find -regex .*/a.*/b
    
por 01.01.2010 / 18:13