Procurando por arquivos dentro de subdiretórios?

0

Eu tenho uma árvore de pastas e subpastas pai. Os subdiretórios têm nomes semelhantes. Eu gostaria de procurar por arquivos armazenados nos subdiretórios. Como eu posso fazer isso?

Por exemplo:

Parent-Directory
  Sub-Directory 1
    input save bad
  Sub-Directory 2
    input save bad
  Sub-Directory 3 
    input save bad

Cada um dos subdiretórios contém três pastas nomeadas (input, save e bad). Eu só gostaria de procurar por arquivos dentro dos subdiretórios ruins.

    
por James Hete 19.09.2018 / 12:59

2 respostas

1

Supondo que você deseja fazer uma pesquisa recursiva usando find em cada um dos diretórios bad que estão em um nível abaixo do diretório chamado Main Directory :

find 'Main Directory'/*/bad ...rest of find options...

Deixei o restante das opções find fora porque você nunca diz o que deseja pesquisar.

find é capaz de levar mais de um diretório como ponto de partida para sua pesquisa. Aqui, damos a ele um padrão de globbing de nomes de arquivos que será expandido pelo shell para os caminhos dos vários diretórios bad .

Supondo que você queira apenas imprimir os nomes de caminho de todos os arquivos (regulares) dentro ou abaixo desses diretórios:

find 'Main Directory'/*/bad -type f

Se os diretórios bad não tiverem subdiretórios que você precise examinar internamente, e se o número de arquivos que você precisa processar não for muitos, você poderá usar apenas

'Main Directory'/*/bad/*

(onde é assumido que o% final * corresponde aos nomes dos arquivos que você precisa processar) com qualquer utilidade que você precise usar. Por exemplo, com ls :

ls 'Main Directory'/*/bad/*
    
por 19.09.2018 / 14:05
-1

Sua pergunta não está clara, mas eu suponho que você gostaria de encontrar arquivos no subdiretório "BAD", você pode executar este comando no diretório principal:

find . -maxdepth 2 -type d -name "BAD" 

ou use

find . -name "*BAD*" -type f -o -name "*BAD*" -type d

explicação

o comando -o ou os argumentos após o caminho do arquivo completamente, tal que encontre. -name " string " -tipo f -o -type d calcula find. (-nome " BAD " -tipo f) -o (-tipo d).

A maioria dos usuários prefere algo parecido com:

find . -name  "*BAD*" -type f -o -name "*BAD*" -type d

que calcula como

find . (-name  "*BAD*" -type f) -o (-name "*BAD*" -type d)

-name " BAD " procura por nomes que contenham a string em qualquer lugar neles

Para simplificar:

find . -maxdepth 2 -o -name "*BAD*"
    
por 19.09.2018 / 13:32

Tags