我正在尝试对特定目录中的所有文件执行一个函数(void action(const char*)
)(我不知道他们的名字)。最简单的方法是什么?
我在C中不是很好,我在其他用户问题中找到了一些非常有用的代码,但我没有成功使用这个输入为我工作(没有找到如何找到该功能目录中的所有文件名)
感谢。
答案 0 :(得分:0)
如果您能够/愿意使用find
和xargs
,这是一个相当轻松的解决方案。如果你没有太多的文件,这不是最快的,但在易用性和性能之间取得了很好的平衡。你可以这样做:
#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 {] \;