所以我试图创建一个在文件夹中查找并找到所有具有 .cpp 并在其上运行 g++ 的文件类型的脚本。到目前为止我有,但它没有运行它说意外结束
for i in `find /home/Phil/Programs/Compile -name *.cpp` ; do echo $i ;
done
谢谢
所以我试图创建一个在文件夹中查找并找到所有具有 .cpp 并在其上运行 g++ 的文件类型的脚本。到目前为止我有,但它没有运行它说意外结束
for i in `find /home/Phil/Programs/Compile -name *.cpp` ; do echo $i ;
done
谢谢
您的代码的问题是通配符*
在传递给查找之前由外壳扩展。如此引用它:
for i in `find /home/Phil/Programs/Compile -name '*.cpp'` ; do echo $i ; done
xargs
不过,正如其他人所建议的那样,这是解决此问题的好方法。
find
有一个选项可以做到这一点:
find /p/a/t/h -name '*.cpp' -exec g++ {} \;
这段代码对我有用:
#!/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
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++
I think you want to use xargs:
For example:
find /home/Phil/Programs/Compile -name *.cpp | xargs g++
像这样使用 xargs 怎么样:
find $working_dir -type f -name *.cpp | xargs -n 1 g++