Bash脚本如何查找文件夹中的每个文件并在其上运行命令

时间:2013-10-11 23:07:22

标签: bash

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

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

由于

5 个答案:

答案 0 :(得分:4)

代码的问题在于,在传递给find之前,shell正在扩展通配符*。引用它:

for i in `find /home/Phil/Programs/Compile -name '*.cpp'` ; do echo $i ;  done
但是,其他人建议的

xargs是解决这个问题的好方法。

答案 1 :(得分:3)

find可以选择这样做:

find /p/a/t/h -name '*.cpp' -exec g++ {} \;

答案 2 :(得分:1)

您可以使用xargs,如:

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

或者如果你想处理包含空格的文件:

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

答案 3 :(得分:1)

我想你想使用xargs

例如:

find /home/Phil/Programs/Compile -name *.cpp | xargs g++

答案 4 :(得分: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