【发布时间】:2018-09-15 01:43:30
【问题描述】:
所以我试图创建一个在文件夹中查找并找到所有具有 .cpp 的文件类型并在其上运行 g++ 的脚本。到目前为止我有但它没有运行它说意外结束
for i in `find /home/Phil/Programs/Compile -name *.cpp` ; do echo $i ;
done
谢谢
【问题讨论】:
-
你使用的是什么外壳,在哪个操作系统上?
标签: bash
所以我试图创建一个在文件夹中查找并找到所有具有 .cpp 的文件类型并在其上运行 g++ 的脚本。到目前为止我有但它没有运行它说意外结束
for i in `find /home/Phil/Programs/Compile -name *.cpp` ; do echo $i ;
done
谢谢
【问题讨论】:
标签: bash
您的代码的问题是通配符* 在传递给查找之前被shell 扩展。如此引用它:
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
【讨论】:
\r\n 换行符?
*.cpp 被顺利通过以找到。
你可以像这样使用 xargs:
find folder/ -name "*.cpp" | xargs g++
或者如果你想处理包含空格的文件:
find folder/ -name "*.cpp" -print0 | xargs -0 g++
【讨论】:
【讨论】:
像这样使用 xargs 怎么样:
find $working_dir -type f -name *.cpp | xargs -n 1 g++
【讨论】: