GNU/Linux >> Tutoriels Linux >  >> Linux

Existe-t-il des API C pour extraire le nom du fichier de base de son chemin complet sous Linux ?

Il y a basename() .

Nourrissez-le avec un chemin (sous la forme d'un char* ) et il vous renverra le nom de base (c'est-à-dire le nom du fichier/répertoire que vous voulez) sous la forme d'un autre char* .

MODIFIER :

J'ai oublié de vous dire que la version POSIX de basename() modifie son argument. Si vous voulez éviter cela, vous pouvez utiliser la version GNU de basename() en ajoutant ceci dans votre source :

#define _GNU_SOURCE
#include <string.h>

En échange cette version de basename() renverra une chaîne vide si vous l'alimentez avec, par ex. /usr/bin/ à cause de la barre oblique finale.


Vous voulez basename(), qui devrait être présent sur à peu près n'importe quel système POSIX :

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. Utilisation de Google Drive à partir de la ligne de commande Linux

  2. Obtenir le chemin d'accès complet d'un répertoire donné ?

  3. 4 outils pour télécharger n'importe quel fichier en utilisant la ligne de commande sous Linux

  4. Existe-t-il des codes d'état de sortie standard sous Linux ?

  5. Extraire le nom de base du fichier sans chemin ni extension dans bash

Comment extraire le fichier tar.gz sous Linux à l'aide de la ligne de commande

Comment extraire des adresses e-mail d'un fichier texte sous Linux

Comment obtenir le nom de fichier à partir du chemin complet sous Linux

Nom du processus à partir de son pid sous Linux

Lister le fichier à l'aide de la commande ls sous Linux avec le chemin complet

Comment extraire le nom de fichier sans l'extension d'un chemin complet ?