繁体   English   中英

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

[英]Bash Script How to find every file in folder and run command on it

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

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

谢谢

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

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

xargs ,其他人建议的xargs是解决这个问题的好方法。

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

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

您可以使用xargs:

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

或者,如果要处理包含空格的文件:

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

我想你想使用xargs

例如:

find /home/Phil/Programs/Compile -name *.cpp | xargs 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

如何使用这样的xargs:

find $working_dir -type f -name *.cpp | xargs -n 1 g++

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM