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á #include
hacerlo. 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 glob
función, debe tener en cuenta algunas cosas.
- Por defecto, la
glob
funció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
glob
llamando globfree
cuando 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 NSArray
o 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 .