GNU/Linux >> Znalost Linux >  >> Linux

Jak odstranit všechny soubory ve složce, ale nesmazat složku pomocí standardních knihoven 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;
}

Nechcete vytvořit nový shell přes system() nebo něco takového – to je spousta režie dělat něco velmi jednoduchého a vytváří to zbytečné předpoklady (a závislosti) o tom, co je v systému k dispozici.


V C/C++ můžete udělat:

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

V Bash můžete udělat:

rm -r /tmp/*

Tím se smaže vše v /tmp, ale ne samotné /tmp.


pomocí zástupného znaku * znak můžete odstranit všechny soubory s jakýmkoli typem přípony.

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


Linux
  1. Jak najít všechny řídké soubory v Linuxu

  2. Odstraňte úložiště Git, ale ponechte všechny soubory

  3. Smažte všechny soubory kromě nejnovějších 3 v bash skriptu

  1. Smažte všechny soubory kromě 1000 náhodných souborů v adresáři

  2. Povolit všem uživatelům vytvářet soubory v adresáři, ale mazat může pouze vlastník

  3. Jak zkopíruji strom adresářů, ale ne soubory v Linuxu?

  1. Jak získat počet souborů v adresáři pomocí příkazového řádku?

  2. Smazat všechny soubory ve složce kromě posledních (nejnovějších) 20?

  3. Jak odstranit všechny soubory s konkrétní příponou v konkrétní složce?