GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menghapus semua file dalam folder, tetapi tidak menghapus folder menggunakan pustaka standar 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;
}

Anda tidak ingin menelurkan shell baru melalui system() atau sesuatu seperti itu - banyak biaya tambahan untuk melakukan sesuatu yang sangat sederhana dan membuat asumsi (dan ketergantungan) yang tidak perlu tentang apa yang tersedia di sistem.


Di C/C++, Anda dapat melakukan:

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

Di Bash, Anda dapat melakukan:

rm -r /tmp/*

Ini akan menghapus semua yang ada di dalam /tmp, tetapi bukan /tmp itu sendiri.


dengan menggunakan wildcard * karakter Anda dapat menghapus semua file dengan semua jenis ekstensi.

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


Linux
  1. Bagaimana Cara Menghapus Semua File Dengan Ekstensi Tertentu Di Folder Tertentu?

  2. Hapus repositori Git, tetapi simpan semua file

  3. Bagaimana cara menyalin pohon direktori tetapi bukan file di Linux?

  1. Bagaimana Cara Mendapatkan Hitungan File Dalam Direktori Menggunakan Baris Perintah?

  2. Hapus Semua File Dalam Satu Folder Kecuali Yang Terakhir (Terbaru) 20?

  3. Dapatkan Semua File Tapi File Dalam Array – Bash?

  1. Bagaimana Menemukan Semua Repositori Subversion Pada Sistem?

  2. Hapus semua file kecuali 3 terbaru dalam skrip bash

  3. Bagaimana cara mendapatkan sistem operasi saat ini di MSBuild?