GNU/Linux >> Tutoriales Linux >  >> Linux

¿Hay alguna API de C para extraer el nombre del archivo base de su ruta completa en Linux?

Hay nombre base() .

Aliméntalo con una ruta (en forma de char* ) y le devolverá el nombre base (que es el nombre del archivo/directorio que desea) en forma de otro char* .

EDITAR:

Olvidé decirte que la versión POSIX de basename() modifica su argumento. Si quieres evitar esto, puedes usar la versión GNU de basename() anteponiendo esto en su fuente:

#define _GNU_SOURCE
#include <string.h>

A cambio de esta versión de basename() devolverá una cadena vacía si la alimenta, p. /usr/bin/ debido a la barra diagonal final.


Desea basename(), que debería estar presente en prácticamente cualquier sistema POSIX-ish:

http://www.opengroup.org/onlinepubs/000095399/functions/basename.html

#include <stdio.h>
#include <libgen.h>

int main() {
  char name[] = "/foo/bar.txt";
  printf("%s\n", basename(name));
  return 0;
}

...

$ gcc test.c
$ ./a.out
bar.txt
$ 

#include <string.h>

char *basename(char const *path)
{
    char *s = strrchr(path, '/');
    if (!s)
        return strdup(path);
    else
        return strdup(s + 1);
}

Linux
  1. Uso de Google Drive desde la línea de comandos de Linux

  2. Linux:¿cuáles son las diferentes formas de establecer permisos de archivos, etc. en Gnu/linux?

  3. Linux:¿por qué no hay un sistema de archivos Rootfs presente en el sistema?

  4. ¿Obtener el nombre completo de la ruta de un directorio dado?

  5. ¿Existen códigos de estado de salida estándar en Linux?

Cómo extraer el archivo tar.gz en Linux usando la línea de comandos

Cómo extraer direcciones de correo electrónico de un archivo de texto en Linux

Cómo obtener el nombre de archivo de la ruta completa en Linux

¿Cómo crear un archivo en Linux desde la ventana de terminal?

Cómo agregar el archivo .so a java.library.path en Linux

Configure el indicador de terminal en Ubuntu para mostrar solo el nombre del directorio de trabajo en lugar de su ruta completa