使用-execdir查找不执行命令

时间:2013-04-19 12:16:34

标签: bash gcc find

我正在尝试编写一个脚本来读取源文件列表,并使用此命令使用gcc编译它们:find $source -name '*.c' -or -name '*.cpp' -execdir gcc {} -o $output \;我能够找到源文件,但它们未编译与gcc。我该怎样做才能真正编译它们?

1 个答案:

答案 0 :(得分:2)

-execdir操作将作为表达式的一部分进行评估。 -a优先于-o,因此find表达式如下:

find $source \( -name '*.c' \) -or \( -name '*.cpp' -execdir gcc {} -o $output \; \)

您需要在表达式中添加括号,以强制find按您的意愿行事:

find $source \( -name '*.c' -or -name '*.cpp' \) -execdir gcc {} -o $output \;

一些更简单的例子:

# touch a b
# find . -name a -o -name b -print
./b
# find . -name a -print -o -name b
./a
# find . \( -name a -o -name b \) -print
./b
./a