linux - 在 Linux 中写一个脚本在每个最大深度为 2 的子目录中运行 make

标签 linux bash scripting csh

我希望编写一个脚本以进入每个子目录(不是递归地)并运行一个 make 文件来创建一个二进制文件。一种方法是更改​​目录并为每个文件夹运行 make,但这不是很优雅,如果添加了额外的文件夹和文件,则可能容易出错。

我在深入研究子目录方面取得了一些成功:

find -maxdepth 2 -type f -print -exec make {} 。\;

我收到每个目录的错误,其中说明如下:

make:reduc211/makefile 无需执行任何操作。

有人知道我可以更改什么吗?任何帮助将不胜感激!

非常感谢,编码愉快。

最佳答案

make reduc211/makefile 不运行指定的 makefile;它使用 make 的查找规则查找 Makefile,并尝试生成目标 reduc211/makefile。你想要的是像

find -maxdepth 2 -name 'Makefile' -print -execdir make \;

这会在找到名为 Makefile 的文件的每个目录中运行 make 命令。

如果您有不同名称的 makefile,例如每个都是 Makefile.something 的形式,您可以尝试

find -maxdepth 2 -name 'Makefile.*' -print -execdir make -f \{}\ \;

使用 find 找到的特定 Makefile 运行 make

关于linux - 在 Linux 中写一个脚本在每个最大深度为 2 的子目录中运行 make,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22966366/

相关文章:

linux - 如何在 2 个特定字符之间插入一个新行

linux - 如何使用 bash 递归删除大量不同文件夹中的一组目录?

python - 让 bash 从父进程读取命令提示 rune 本

elasticsearch - 如何在Elasticsearch中使用Groovy脚本评分拒绝文档

shell - shell脚本中的DEFINE是什么

linux - 在httpd.conf中收集网站并获取文件夹大小的脚本

c++ - Qt Linux 中的链接 boost

c++ - GCC 链接错误 "__wcsrtombs: Zusicherung »data.__outbuf[-1] == '\0'« nicht erfüllt"

linux - Linux中如何证明目录是一个文件

java - Rhino,从多个javascript文件添加代码