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

Wie lösche ich alle Dateien in einem Ordner, aber lösche den Ordner nicht mit NIX-Standardbibliotheken?

#include <stdio.h>
#include <dirent.h>

int main()
{
    // These are data types defined in the "dirent" header
    DIR *theFolder = opendir("path/of/folder");
    struct dirent *next_file;
    char filepath[256];

    while ( (next_file = readdir(theFolder)) != NULL )
    {
        // build the path for each file in the folder
        sprintf(filepath, "%s/%s", "path/of/folder", next_file->d_name);
        remove(filepath);
    }
    closedir(theFolder);
    return 0;
}

Sie möchten keine neue Shell über system() spawnen oder so ähnlich - das ist eine Menge Overhead, um etwas sehr Einfaches zu tun, und es macht unnötige Annahmen (und Abhängigkeiten) darüber, was auf dem System verfügbar ist.


In C/C++ könnten Sie Folgendes tun:

system("exec rm -r /tmp/*")

In Bash könnten Sie Folgendes tun:

rm -r /tmp/*

Dies löscht alles in /tmp, aber nicht /tmp selbst.


indem Sie den Platzhalter * verwenden Zeichen können Sie alle Dateien mit jeder Art von Erweiterung löschen.

system("exec rm -r /tmp/*")


Linux
  1. Wie erhalte ich eine Anzahl von Dateien in einem Verzeichnis über die Befehlszeile?

  2. Entfernen Sie das Git-Repository, aber behalten Sie alle Dateien

  3. Löschen Sie alle Dateien außer den neuesten 3 im Bash-Skript

  4. Löschen Sie alle bis auf 1000 zufällige Dateien in einem Verzeichnis

  5. Wie kopiere ich einen Verzeichnisbaum, aber nicht die Dateien in Linux?

So überprüfen Sie alle laufenden Dienste in Linux

So automatisieren Sie Systemneustarts mit dem Ansible-Neustartmodul

So löschen Sie Dateien und Verzeichnisse mit dem Terminal in Debian 10

So löschen Sie Dateien und Verzeichnisse mit der Linux-Befehlszeile

So löschen Sie Dateien sicher mit dem Shred-Befehl in Debian 11

So löschen Sie ausgewählten Text im vi-Editor