Localizando todos os arquivos com extensão .c, .hejava dentro do diretório atual

1

Estou tentando encontrar todos os arquivos (que terminam em .c, .h e .java) que estão em uma pasta ou em seus subdiretórios que começam com "new-". Este é o meu comando atual: ls -R | egrep '. [.] c $ |. [.] h $ |. * [.] java $' O que devo mudar?

    
por Kostakis 30.11.2017 / 18:10

2 respostas

1

Use a localização com parênteses -o (ou operando) e (com escape):

find $dir \( -name 'new*.java' -o -name 'new*.c' \)

Tecnicamente, os parênteses não são necessários, a menos que você adicione outros filtros.

Você também pode usar um regexp:

find . -regextype egrep -regex '.*/new-.*\.(java|c)'

(o regexp deve corresponder ao caminho completo, portanto, o .*/ no início.

    
por 30.11.2017 / 19:51
0

É meio feio, mas isso produziria cada extensão de arquivo desejada no diretório atual e nos subdiretórios

find . -type f -name '*.c' && find . -type f -name '*.h' && find . -type f -name '*.java'

EDITAR:

Se você tiver que usar o ls, isso pode ser o que você está procurando:

ls | grep -r '*.c\|*.h\|*.java' | grep new-*
    
por 30.11.2017 / 18:41