Löschen von mehreren Dateien mit teilweise unbekannten Dateinamen



  • Hallo Leute,

    das löschen einer Datei ist mit "remove("dateiname")" ja recht simpel. Jedoch würde ich gerne eine unbekannte Menge von Dateien mit nur teilweise bekanntem Dateinamen löschen. Um es ein weinig verständlicher zu machen:
    Unter Linux würde ich die Dateien mit "rm dateiname." bzw. unter DOS mit "del dateiname." manuell entfernen. Gibt es unter 'C' auch die Möglichkeit solcher "Platzhalter"(*)?

    Gruß
    Stephan



  • Hi,

    ja naturlich ist es moeglich. Aber du musst es "manualy" mit den Funktionen "_findfirst", "_findnext" und "_findclose" machen:

    struct _finddata_t fileinfo;
    long h_file;
    long ret;

    ret = h_file = _findfirst ("*.dll", &fileinfo );

    if ( ret != -1)
    {

    while (ret != -1)
    {
    delete (fileinfo.name);
    ret = _findnext (h_file, &fileinfo );
    }

    _findclose (h_file);
    }

    Es ist nur ein Beispiel. Tchus.

    Fredy



  • Schon mal vielen Danke.
    Aber noch zwei kleine Verständnisfragen dazu.

    "*.dll" steht für den mir bekannten Teil des Dateinamens; in diesem Fall eine DLL-Datei???!

    Das Struct "struct_findata_t" muß ich noch erstellen? Wie binde ich da .name ein?



  • O.K. Frage selbst beantwortet. Wer lesen kann ist klar im Vorteil 😉

    Vielen Dank



  • Jetzt habe ich nach einigem Probieren doch noch ein Problem:

    Beim Kompilieren bekomme ich folgende Fehlermeldung:
    storage size of `fileinfo' isn't known
    Ich hoffe jemand von Euch kann mir weiterhelfen.



  • Mitlerweile sieht der Quelltext bei mir folgendermaßen aus:

    struct _finddata_t *fileinfo;
    long h_file;
    long ret;

    ret = h_file = _findfirst("/usr/src/PESQ/rtp_payload_AN_*", &fileinfo );

    if ( ret != -1)
    {

    while (ret != -1)
    {
    remove (&fileinfo.name);
    ret = _findnext(h_file, &fileinfo);
    }

    _findclose(h_file);
    }

    Die Änderung von "fileinfo" in "*fileinfo" hat oben genanntes Problem behoben.

    Nun rächt sich aber, daß ich Euch die Information - daß ich unter Linux arbeite - vorenthalten habe. Welche Bibliothek muß ich unter Suse Linux einbinden, damit das struct _finddata_t funktioniert?



  • Nach kurzem Stöbern kam raus:

    Natürlich garnicht, denn das ganze gibts wieder nur unter Windows (*tanz*). Unter Linux nimmst Du glob



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten