Procurando arquivos APENAS no subdiretório

0

Então, digamos que eu queira procurar por arquivos que são arquivos C. Como faço para procurar por eles SOMENTE em meus subdiretórios?

Eu tentei: ls -R | egrep .c$ , mas isso também procura por .c arquivos no meu diretório atual também. Como faço para filtrar os arquivos no meu diretório atual e apenas me preocupo com os do meu subdiretório?

    
por Gui Montag 28.09.2015 / 06:57

2 respostas

3

Estritamente em subdiretórios,

ls */*.c

Recursivamente em subdiretórios de subdiretórios,

find */ -type f -name '*.c' -print
    
por 28.09.2015 / 07:10
0

Você pode usar a globalização de arquivos (ou seja, expansão de asterisco) com find como o triplee diz, é claro, mas ... esse comando me fez estremecer.

Quando você está usando o comando find , ele tem tantos sinalizadores embutidos que você pode usar para dizer explicitamente o que você quer fazer, que não há uma boa razão para usar ls com globulação de arquivos. E há uma abundância de razões não para. Por exemplo, globalização de arquivos geralmente ignora arquivos ou diretórios ocultos. Isso significa que qualquer arquivo cujo nome começa com um ponto ou que reside em diretórios (ou subdiretórios de diretórios) cujo nome começa com um ponto , será ignorado . Talvez seja o que você quer, mas com a globalização de arquivos não é fácil e diretamente no seu controle; com find é.

Encontrar é a ferramenta correta para o trabalho. A opção desejada é -mindepth . Use assim:

find . -mindepth 2 -type f -iname '*.c'

Isso localiza todos os arquivos (não-diretórios, não-especiais) que estão dentro de um diretório dentro do diretório atual, ou qualquer número de níveis abaixo, cujo nome termina em .c ou .C . (O sinal -iname significa ignorar maiúsculas e minúsculas).

(Observe que isso não seguirá links simbólicos; normalmente é assim que você deseja, mas você pode verificar man find para aprender como ajustar esse comportamento.)

Como sidenote, também usei ls canalizado para grep por algum tempo antes de aprender o comando find , mas find é realmente o melhor método. Descobri que os comandos práticos fornecidos neste link são muito úteis para realmente começar a usar find no trabalho do dia a dia: link

Espero que isso ajude. :)

    
por 28.09.2015 / 10:18