Como eu procuro todos os subdiretórios para encontrar um com um certo nome?

5

Digamos que eu tenha um diretório de nível superior chamado /dir e muitos subdiretórios. Como faço para pesquisar os subdiretórios de /dir para encontrar o chamado x/x/dir/x/x/x/target ?

Esta questão é semelhante, mas não exatamente o que estou procurando: find command para determinados subdiretórios .

Não estou procurando arquivos, apenas diretórios com um nome específico.

    
por bernie2436 03.12.2013 / 17:45

3 respostas

10

Experimente find /dir -type d -name "your_dir_name" .

Substitua /dir pelo nome do seu diretório e substitua "your_dir_name" pelo nome que você está procurando.

-type d dirá find para procurar apenas diretórios.

    
por 03.12.2013 / 17:48
0

Para uma solução mais geral de encontrar um ou mais diretórios e procurá-los por algo como encontrar endereços de e-mail antigos em repositórios git, observe o seguinte padrão:

find . -type d -name .git -print0|\
    xargs -0r -I {} find {} -type f -print0 |\
    xargs -0r grep -e '[email protected]'
    
por 03.12.2013 / 20:18
0
echo **/target

ou para obter uma correspondência por linha:

printf %s\n **/target

Isso funciona fora da caixa em zsh. No bash, você precisa executar shopt -s globstar primeiro e tenha cuidado com o fato de isso também atravessar links simbólicos para diretórios. No ksh93, você precisa executar set -o globstar primeiro.

Se você quiser corresponder apenas diretórios ou links simbólicos a diretórios, adicione um / (ou seja, **/target/ ) à direita. Em zsh, para corresponder apenas aos diretórios, mas não aos links simbólicos para os diretórios, faça isso **/target(/) .

Em qualquer shell, você pode usar o comando find :

find . -name target

No Linux e no Cygwin, o . é opcional. Se você quiser corresponder apenas diretórios, adicione -type d .

    
por 04.12.2013 / 02:00