清理linux目录下的文件

标签 c linux

我想在 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 , readdirclosedir用于处理目录,则只需使用 fopen在写入模式后跟 fclose在每个候选文件上。

如果你想导航整个目录结构而不仅仅是当前目录,你必须从 readdir 中检测目录并可能递归遍历它们。

关于清理linux目录下的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3493449/

相关文章:

c - 通过杀死 kthread 来恢复 unix 设备驱动程序的最佳选择

c - 如何在 C 语言中删除文件末尾不需要的字符?

c - Linux新手问题: GCC Compiler output

linux - 管道 ls 到 less 并实时监控文件系统更改

linux - Is "who' s your daddy?"Linux 中的命令?

c - C 中的无限循环

c - 使用 fork() 函数使子进程和父进程共享内存

java - 调整 Ubuntu 字体高度

ruby - 无法在 JRuby 中安装 therubyracer

c - 如何在ARMv6+上实现16bit立体声混音?