Como usar o comando ls com cd recursivamente

4

Eu tenho um requisito em que preciso validar a estrutura de pastas aninhadas.

Ex: Eu tenho 3 pastas: test1, test2, test3 (Praticamente pode haver qualquer número de tais pastas). Agora todas essas pastas devem conter pastas como V1, V2 ... assim ('V' seguido de número). Sob esta pasta (V1 ...), deve haver apenas dois nomes de pastas 'dummy1' e 'dummy2'.

Assim, todas essas verificações devem ser feitas recursivamente até que todas as pastas, como teste 1 ... teste2 ... São verificadas.

    
por Ankit 18.04.2011 / 12:28

4 respostas

3

Você pode usar o comando localizar . Encontre recurses através de uma estrutura de diretórios fazendo coisas para cada arquivo / diretório. Você pode limitá-lo a diretórios com o sinalizador -type.

find start_dir -type d -print

Para realmente validar todos têm a estrutura, eu acho que você vai ter que escrever um script olhando para esta lista - e eu acho que você teria que fazer isso em uma linguagem de script mais poderosa do que a shell, por exemplo. perl, python, ruby, tcl.

    
por 18.04.2011 / 12:42
1

Outra opção é o simples comando tree .

Apenas faça

tree directory/

depois, 'validar' a saída disso.

    
por 18.04.2011 / 12:47
1

teste positivo:

find test* -maxdepth 1 -type d -regex ".*/V[0-9]+" 
find test* -mindepth 2 -maxdepth 2 -type d -regex ".*/V[0-9]+/dummy[12]" 

teste negativo:

find test* -maxdepth 1 -type d -not -regex ".*/V[0-9]+" 
find test* -mindepth 2 -maxdepth 2 -type d -not -regex ".*/V[0-9]+/dummy[12]" 
    
por 18.04.2011 / 14:44
0

Tente usar o comando abaixo:

find . -name dummy1 -exec echo "Hello, '{}'" \;
find . -name dummy2 -exec echo "Hello, '{}'" \;

isto fornece a saída junto com o PWD.

    
por 18.04.2011 / 13:25