-1

我需要一个参数,它是当前目录的目录并搜索其文件夹并编译这些文件夹中的任何 C 文件。我刚刚开始在 Bash 中编写 shell 脚本,而且有点过头了。

到目前为止,我尝试过的事情包括使用 find 搜索文件,然后将其通过管道传输到 xargs 进行编译,但不断收到错误消息,指出 testing.c 不是目录。

find ~/directory -name *.c | xargs gcc -o testing testing.c

我也尝试过 ls -R 在文件夹中搜索 .c 文件,但不知道如何将路径作为参数然后移动到并编译?

4

3 回答 3

2
find ~/directory -type f -name "*.c" -print0 |
while IFS= read -r -d '' pathname; do
    gcc -o "${pathname%.c}" "$pathname"
done
于 2013-05-18T08:36:44.180 回答
0

正如@shx2 建议的那样,使用make(或其他一些构建系统)可以说是最好的方法。如果没有适当的构建系统,您不想在某些源代码树中编译文件。

于 2013-05-18T15:06:48.373 回答
0
find directory -type f -name "*.c" -exec sh -c \
  'cd $(dirname $1);make $(basename $1 .c)' sh {} \;
于 2013-05-18T09:15:15.110 回答