GNU/Linux >> Linux Esercitazione >  >> Linux

Come eliminare tutti i file in una cartella, ma non eliminare la cartella utilizzando le librerie standard NIX?

#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;
}

Non vuoi generare una nuova shell tramite system() o qualcosa del genere:è un sovraccarico per fare qualcosa di molto semplice e crea presupposti (e dipendenze) non necessari su ciò che è disponibile sul sistema.


In C/C++, potresti fare:

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

In Bash, potresti fare:

rm -r /tmp/*

Questo eliminerà tutto all'interno di /tmp, ma non /tmp stesso.


utilizzando il carattere jolly * carattere è possibile eliminare tutti i file con qualsiasi tipo di estensione.

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


Linux
  1. Come ottenere un conteggio di file in una directory utilizzando la riga di comando?

  2. Eliminare tutti i file in una cartella tranne l'ultimo (più recente) 20?

  3. Come eliminare tutti i file con un'estensione particolare in una cartella particolare?

  4. Ottieni tutti i file tranne i file nell'array - Bash?

  5. Come individuare tutti i repository di Subversion sul sistema?

Come controllare tutti i servizi in esecuzione in Linux

Come automatizzare i riavvii del sistema utilizzando il modulo di riavvio di Ansible

Come eliminare file e directory utilizzando il terminale in Debian 10

Come eliminare file e directory utilizzando la riga di comando di Linux

Come eliminare in modo sicuro i file utilizzando il comando Shred in Debian 11

Come eliminare il testo selezionato nell'editor vi