我必须删除C代码中的几百个文件。我在循环中使用“删除”。有没有比使用“删除”更快的方法呢?我问这个是因为我不能使用“删除”给野人。
答案 0 :(得分:10)
不,没有比在POSIX系统上使用remove()
- 或unlink()
更快的方法 - 在循环中。
系统rm
命令也是这样做的 - 至少在命令行上给出名称的简单非递归情况下。 shell扩展了元字符,并且rm
(in)着名地删除了它被告知要删除的内容,而不知道在命令行上使用的灾难性*.*
表示法。 (在递归的情况下,它使用诸如nftw()
之类的函数以深度优先顺序遍历目录结构,并重复调用unlink()
以删除文件,并rmdir()
删除(glob()
now-empty)目录。)
POSIX提供函数(wordexp()
和fnmatch()
)来生成(POSIX)shell中使用的元字符的文件名列表,加上{{3}}以查看名称是否与图案。
答案 1 :(得分:0)
您可以使用system
生成一个可以为您进行*扩展的shell。这可能不会比在循环中调用unlink()更快地运行,因为它必须生成一个shell(启动一个新进程)。但是编码会更容易。