我想清除Linux上目录中的所有文件(不删除它们,只清除它们的内容)
我需要在C做
阻止recv()返回小于请求的字节的情况
Boost :: mutex比没有mutex的程序花费的时间less
Windows / C ++:如何确定与共享驱动器关联的共享名称?
实际上,你真的不需要用C来做。UNIX中包含了可以完成任何你想要的任务的工具。
find . -type f -exec cp /dev/null {} ';'
上面的特定片段将查找当前目录下的所有文件,并尝试将空设备复制到它,有效地截断文件到0字节。
您可以更改起始(顶层)目录,限制名称(例如使用-name '*.jpg' ),甚至使用-maxdepth 0将其限制到当前目录(无子目录)。
还有许多其他的选择,你可以通过在你的命令行shell中输入man find来发现它。 只要不输入到谷歌,你可能会得到比你讨价还价:-)
如果需要使用C是绝对不可协商的,那么我仍然可以这样做,但是:
system ("find . -type f -exec cp /dev/null {} ';'");
我并不热衷于重新编写软件,他们已经付出了大量的精力来免费提供:-)
如果在我的建议之后,你仍然想要这么做,那么你需要查看opendir , readdir和closedir来处理目录,然后在写模式下使用fopen ,然后在每个候选文件上使用fclose 。
如果你想浏览整个目录结构,而不仅仅是当前目录,你将不得不从readdir检测目录,并可能通过它们递归。
scandir列出他们,然后为每个文件:
fopen(,w+)
fstat来获得大小
用零写整个文件? (这是你明确的意思?)
fclose
一个很好的shell变体是: shred -z directory/*
在Bash:
for i in directory/*; do > $i; done
这将保留文件的所有权和权限。
不要在C做壳工作! 通过使用最好的工具来节省大量的时间。 如果这是作业,请将其标记为。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。