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