Estritamente em subdiretórios,
ls */*.c
Recursivamente em subdiretórios de subdiretórios,
find */ -type f -name '*.c' -print
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?
Estritamente em subdiretórios,
ls */*.c
Recursivamente em subdiretórios de subdiretórios,
find */ -type f -name '*.c' -print
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. :)
Tags grep shell-script