4

所以我试图创建一个在文件夹中查找并找到所有具有 .cpp 并在其上运行 g++ 的文件类型的脚本。到目前为止我有,但它没有运行它说意外结束

for i in `find /home/Phil/Programs/Compile -name *.cpp` ; do echo $i ; 
done

谢谢

4

6 回答 6

4

您的代码的问题是通配符*在传递给查找之前由外壳扩展。如此引用它:

for i in `find /home/Phil/Programs/Compile -name '*.cpp'` ; do echo $i ;  done

xargs不过,正如其他人所建议的那样,这是解决此问题的好方法。

于 2013-10-12T01:23:10.310 回答
3

find有一个选项可以做到这一点:

find /p/a/t/h -name '*.cpp' -exec g++ {} \;
于 2013-10-11T23:16:48.440 回答
1

这段代码对我有用:

#!/bin/bash

for i in `find /home/administrator/Desktop/testfolder -name *.cpp` ; do echo $i ; 
done

我得到:

administrator@Netvista:~$ /home/administrator/Desktop/test.sh
/home/administrator/Desktop/testfolder/main.cpp
/home/administrator/Desktop/testfolder/main2.cpp
于 2013-10-11T23:13:00.037 回答
1

You could use xargs like:

find folder/ -name "*.cpp" | xargs g++

Or if you want to handle files which contain whitespaces:

find folder/ -name "*.cpp" -print0 | xargs -0 g++

于 2013-10-11T23:10:28.273 回答
1

I think you want to use xargs:

For example:

find /home/Phil/Programs/Compile -name *.cpp | xargs g++
于 2013-10-11T23:10:28.633 回答
0

像这样使用 xargs 怎么样:

find $working_dir -type f -name *.cpp | xargs -n 1 g++
于 2018-09-14T17:43:30.010 回答