如何清除Linux上的C ++目录内容(基本上,我想要做'rm -rf <directorypath> / *'

我在Linux(Ubuntu)上编写一个c ++程序。 我想删除一个目录的内容。 它可以是松散的文件或子目录。

本质上,我想做一些相当于

rm -rf <path-to-directory>/* 

你可以build议在c + +与所需的标题做这个最好的方式。 是否有可能这样做与sys / stat.h或sys / types.h或sys / dir.h?

Solutions Collecting From Web of "如何清除Linux上的C ++目录内容(基本上,我想要做'rm -rf <directorypath> / *'"

使用带有FTW_DEPTH标志的nftw() (File Tree Walk)函数。 提供一个回调函数,在传入的文件上调用remove()

 #define _XOPEN_SOURCE 500 #include <stdio.h> #include <ftw.h> #include <unistd.h> int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf) { int rv = remove(fpath); if (rv) perror(fpath); return rv; } int rmrf(char *path) { return nftw(path, unlink_cb, 64, FTW_DEPTH | FTW_PHYS); } 

如果您不想删除基本目录本身,请更改unlink_cb()函数以检查级别:

 int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf) { int rv; if (ftwbuf->level == 0) return 0; rv = remove(fpath); if (rv) perror(fpath); return rv; } 
 system ("rm -rf <path-to-directory>");