comando tree para vários includes e exclui

21

Poderia, por favor, dar-me um exemplo do uso do comando tree para filtrar o resultado da seguinte forma:

  • para ignorar diretórios (digamos, bin , unitTest )
  • listando apenas determinados arquivos com extensões (digamos .cpp , .c , .hpp , .h )
  • fornecendo nomes de caminho completos somente dos arquivos resultantes que correspondem aos critérios.
por Linda 12.01.2013 / 19:27

3 respostas

42

Uma maneira é usar padrões com as opções -I e -P :

tree -f -I "bin|unitTest" -P "*.[ch]|*.[ch]pp." your_dir/

O -f imprime o caminho completo para cada arquivo e -I exclui os arquivos no padrão aqui separados por uma barra vertical. A opção -P inclui apenas os arquivos listados no padrão que corresponde a uma determinada extensão.

    
por 12.01.2013 / 19:47
4

use o comando find e tree que usa prune de find para excluir diretórios de pesquisa e use tree -P para pesquisar o padrão.

Use o comutador de remoção, por exemplo, se você quiser excluir o diretório misc , basta adicionar um -path ./misc -prune -o ao seu comando find.

por exemplo, find . -path ./misc -prune -o -exec tree -P <pattern> {} \; ou você pode usar -name "*.cpp" in find

para excluir o uso de vários diretórios

find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -o

    
por 12.01.2013 / 19:46
2

A verdadeira solução é produzir caminhos completos, filtrar caminhos indesejados e, finalmente, corrigir as saídas.

tree -df | egrep -v "\./(bin|unitTest)/.*" | sed -r 's%\./.*/%%g'

Se todos os arquivos forem necessários na saída, remova o parâmetro "d".

A explicação detalhada pode ser encontrada em: link se você puder entender japonês.

    
por 21.07.2016 / 17:46