我想在 Linux 上清除目录中的所有文件(不是删除它们,只清除它们的内容)
我需要用 C 来做。
最佳答案
实际上,您确实不需要在 C 中执行此操作。UNIX 包含的工具几乎可以执行您想要的任何任务。
find . -type f -exec cp /dev/null {} ';'
上面的特定代码片段将找到当前目录下的所有文件并尝试将空设备复制到它,有效地将文件截断为 0 字节。
您可以更改起始(顶级)目录,限制名称(例如使用 -name '*.jpg'
),甚至可以使用 将其限制在当前目录(无子目录) >-最大深度 0
。
许多 find
的其他选项,您可以通过在命令行 shell 中输入 man find
来发现这些选项。只是不要将它输入 Google,你可能会得到比你预想的更多:-)
如果使用 C 的需要是绝对没有商量余地的,我会仍然这样做,但是:
system ("find . -type f -exec cp /dev/null {} ';'");
我不热衷于重写已经有人付出大量努力免费提供的软件:-)
如果在我的建议之后,您仍然想以艰难的方式去做,您需要查看opendir
, readdir
和 closedir
用于处理目录,则只需使用 fopen
在写入模式后跟 fclose
在每个候选文件上。
如果你想导航整个目录结构而不仅仅是当前目录,你必须从 readdir
中检测目录并可能递归遍历它们。
关于清理linux目录下的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3493449/