C- - 如何对目录中的所有文件执行功能?

时间:2015-11-06 23:38:50

标签: c function file iteration

我正在尝试对特定目录中的所有文件执行一个函数(void action(const char*))(我不知道他们的名字)。最简单的方法是什么? 我在C中不是很好,我在其他用户问题中找到了一些非常有用的代码,但我没有成功使用这个输入为我工作(没有找到如何找到该功能目录中的所有文件名)

感谢。

1 个答案:

答案 0 :(得分:0)

如果您能够/愿意使用findxargs,这是一个相当轻松的解决方案。如果你没有太多的文件,这不是最快的,但在易用性和性能之间取得了很好的平衡。你可以这样做:

#include <stdio.h>

void handle_file(char* fname)
{
  FILE* fp = fopen(fname,"r");
  // deal with fp == NULL - do you want to abort or ignore if a file cannot be processed?
  // do your magic with fp
  fclose(fp);
}

int main(int argc, char** argv)
{
  int i;
  for (i = 1; i < argc; i++)
    handle_file(fname);
  return 0;
}

将其编译成二进制文件,我们称之为do_file_magic

然后来自Bash:

find . -type f -print0 | xargs -0 ./do_file_magic

find . -type -f -exec ./do_file_magic {] \;