GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo eliminar todos los archivos en una carpeta, pero no eliminar la carpeta usando las bibliotecas estándar de 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;
}

No desea generar un nuevo shell a través de system() o algo por el estilo:es una gran cantidad de gastos generales para hacer algo muy simple y hace suposiciones (y dependencias) innecesarias sobre lo que está disponible en el sistema.


En C/C++, podrías hacer:

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

En Bash, podrías hacer:

rm -r /tmp/*

Esto borrará todo dentro de /tmp, pero no /tmp en sí mismo.


usando el comodín * carácter puede eliminar todos los archivos con cualquier tipo de extensión.

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


Linux
  1. Eliminar todos los archivos de una carpeta excepto el último (más reciente) 20?

  2. ¿Cómo eliminar todos los archivos con una extensión particular en una carpeta particular?

  3. Obtener todos los archivos excepto los archivos en matriz:¿Bash?

  4. Cómo encontrar todos los archivos dispersos en Linux

  5. Eliminar el repositorio de Git, pero conservar todos los archivos

Cómo verificar todos los servicios en ejecución en Linux

Cómo automatizar reinicios del sistema usando el módulo de reinicio de Ansible

Cómo eliminar archivos y directorios usando la terminal en Debian 10

Cómo eliminar archivos y directorios usando la línea de comandos de Linux

Cómo eliminar archivos de forma segura usando el comando Shred en Debian 11

Cómo eliminar el texto seleccionado en el editor vi