Unix tiene una biblioteca que puede realizar operaciones de globalización de archivos por usted. Las funciones y los tipos se declaran en un encabezado llamado glob.h, por lo que deberá #includehacerlo. Si abre un terminal y abra la página de manual de glob escribiendo man 3 glob, obtendrá toda la información que necesita saber para usar las funciones.
A continuación se muestra un ejemplo de cómo podría llenar una matriz de archivos que coinciden con un patrón global. Cuando utilice la globfunción, debe tener en cuenta algunas cosas.
- Por defecto, la
globfunción busca archivos en el directorio de trabajo actual. Para buscar en otro directorio, deberá anteponer el nombre del directorio al patrón global como lo hice en mi ejemplo para obtener todos los archivos /bin.
- Usted es responsable de limpiar la memoria asignada
globllamando globfreecuando haya terminado con la estructura.
En mi ejemplo, uso las opciones predeterminadas y no hay devolución de llamada de error. La página de manual cubre todas las opciones en caso de que haya algo allí que desee usar. Si va a utilizar el código anterior, le sugiero agregarlo como una categoría NSArrayo algo así.
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];
Editar: he creado una esencia en github que contiene el código anterior en una categoría llamada NSArray + Globbing .