O Unix possui uma biblioteca que pode executar operações de globbing de arquivos para você. As funções e os tipos são declarados em um cabeçalho chamado glob.h
, então você precisará #include
disso. Se abrir um terminal e abrir a página de manual do glob digitando, man 3 glob
você obterá todas as informações necessárias para usar as funções.
Abaixo está um exemplo de como você pode preencher uma matriz com os arquivos que correspondem a um padrão de globbing. Ao usar a glob
função, lembre-se de algumas coisas.
- Por padrão, a
glob
função procura por arquivos no diretório de trabalho atual. Para pesquisar em outro diretório, você precisará acrescentar o nome do diretório ao padrão globbing, como fiz no exemplo para obter todos os arquivos /bin
.
- Você é responsável por limpar a memória alocada
glob
chamando globfree
quando terminar a estrutura.
No meu exemplo, eu uso as opções padrão e nenhum retorno de chamada de erro. A página de manual cobre todas as opções, caso haja algo que você queira usar. Se você usar o código acima, sugiro adicioná-lo como uma categoria NSArray
ou algo parecido.
NSMutableArray* files = [NSMutableArray array];
glob_t gt;
char* pattern = "/bin/*";
if (glob(pattern, 0, NULL, >) == 0) {
int i;
for (i=0; i<gt.gl_matchc; i++) {
[files addObject: [NSString stringWithCString: gt.gl_pathv[i]]];
}
}
globfree(>);
return [NSArray arrayWithArray: files];
Edit: Eu criei uma essência no github que contém o código acima em uma categoria chamada NSArray + Globbing .