【发布时间】:2013-05-18 05:54:33
【问题描述】:
我需要一个参数,它是当前目录的目录并搜索其文件夹并编译这些文件夹中的任何 C 文件。我刚刚开始在 Bash 中编写 shell 脚本,而且有点过头了。
到目前为止,我尝试过的事情包括使用 find 搜索文件,然后将其通过管道传输到 xargs 进行编译,但一直收到错误消息,指出 testing.c 不是目录。
find ~/directory -name *.c | xargs gcc -o testing testing.c
我也尝试使用 ls -R 在文件夹中搜索 .c 文件,但不知道如何将路径作为参数然后移动到并编译?
【问题讨论】:
-
... 将它们全部编译成一个对象?
-
为这类任务写一个makefile。
-
不,我不希望他们一起编译,Ignacio 所以我知道现在无论如何都行不通了。我有一个 makefile shx2 的快速谷歌,但不认为这是一个选项。问题是一个作业,只是要求一个脚本。我想我需要以某种方式获取 ls 的输出并执行 if 语句来检查是否确实存在 .c 文件,然后移动该目录并编译它们。那我会走上正轨吗?
-
您编写的命令将在目录下查找 .c 文件,然后将它们的相对路径附加到
gcc -o testing testing.c命令。本质上,它会尝试将它们全部编译成一个名为testing的二进制文件,这可能不是您想要的。默认情况下,find 和 xargs 都不会 chdir 进入找到的子目录。
标签: bash shell subdirectory