GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gibt es C-APIs, um den Basisdateinamen aus seinem vollständigen Pfad in Linux zu extrahieren?

Da ist basename() .

Füttern Sie es mit einem Pfad (in Form eines char* ) und es wird Ihnen den Basisnamen (das ist der Name der gewünschten Datei/des gewünschten Verzeichnisses) in Form eines weiteren char* zurückgeben .

BEARBEITEN:

Ich habe vergessen, Ihnen mitzuteilen, dass die POSIX-Version von basename() modifiziert seine Argumentation. Wenn Sie dies vermeiden möchten, können Sie die GNU-Version von basename() verwenden Stellen Sie dies in Ihrer Quelle voran:

#define _GNU_SOURCE
#include <string.h>

Im Austausch diese Version von basename() gibt eine leere Zeichenfolge zurück, wenn Sie sie mit füttern, z. /usr/bin/ wegen des abschließenden Schrägstrichs.


Sie wollen basename(), das auf so ziemlich jedem POSIX-artigen System vorhanden sein sollte:

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. Verwenden von Google Drive über die Linux-Befehlszeile

  2. Linux – Was sind die verschiedenen Möglichkeiten zum Festlegen von Dateiberechtigungen usw. unter Gnu/Linux?

  3. Linux – Warum ist kein Rootfs-Dateisystem auf dem System vorhanden?

  4. 4 Tools zum Herunterladen einer beliebigen Datei über die Befehlszeile in Linux

  5. Gibt es unter Linux standardmäßige Exit-Statuscodes?

So extrahieren Sie die tar.gz-Datei in Linux mithilfe der Befehlszeile

So extrahieren Sie E-Mail-Adressen aus einer Textdatei unter Linux

So erhalten Sie den Dateinamen aus dem vollständigen Pfad in Linux

Abrufen des vollständigen Pfadnamens eines bestimmten Verzeichnisses?

Extrahieren Sie den Basisnamen der Datei ohne Pfad und Erweiterung in Bash

Prozessname von seiner PID in Linux