【发布时间】:2018-03-21 16:06:44
【问题描述】:
我需要做的是在一个文件夹及其子文件夹中找到所有的 c 文件(.c 文件扩展名)。它还需要打印每个 c 文件的函数名(不是全部内容)。
到目前为止我所做的是:
find "$1" -type f -name *.c -exec echo {}":" \; -exec grep -i "(*)" {} \;
但问题是,它应该是这样打印的:
fs/folder/a.c:
int test_function()
fs/project_1/src/b.c:
void test_function_1(int loc)
int test_function_2(int loc)
fs/project_1/util/c.c:
FILE* test_function_3(char* name)
void test_function_4(FILE* file)
void test_function_5(FILE* file)
但是我上面写的shell脚本是这样打印出来的:
fs/folder/a.c:
int test_function() {
fs/project_1/src/b.c:
void test_function_1(int loc) {
int test_function_2(int loc) {
fs/project_1/util/c.c:
FILE* test_function_3(char* name) {
void test_function_4(FILE* file) {
void test_function_5(FILE* file) {
1) 有没有办法删除那些“{”正则表达式并在每个文件之间添加新行?
2) 另外,当我执行程序时,作为输出打印的文件的顺序总是不同的。可以排序吗? (当我尝试 -exec sort {} \ 时,这会使输出完全错误......)
3)最后,我怎样才能让它在输入(文件夹名称)时出现错误消息 是不是文件夹? (eg) 执行时./findfn.sh abcd
有人可以帮我解决这个问题吗?我被这个问题困扰了好几个小时......如果有人打破我的困惑,我将非常感激......谢谢!
【问题讨论】: