2017-03-06 38 views
0

我有一个C++文件,它将图像作为参数。我有一个目录,我需要做的脚本。它看起来像:以目录为参数运行C++文件?用Bash代替?

- parent 
-- sub0 
--- 0.pgm 
--- 1.pgm 
--- ... 
-- sub1 
--- 0.pgm 
--- 1.pgm 
--- ... 
-- ... 

parent包含120子文件夹,每个子文件夹包含100-200 .pgm文件。 C++文件以.pgm作为参数。

而不是运行file.cpp filename.pgm数千次,有没有办法在C++中将文件夹作为参数?我非常喜欢两种:在父文件夹

  1. 呼叫file.cpp,它递归工作通过子文件夹和文件
  2. 做在击而不是

使用bash,一些伪代码:

g++ -march=native -O2 file.cpp -o output 
for $filename in folder 
    ./output $filename 
endfor 

我该如何做到这一点?

+0

编辑程序以获取目录而不是文件名?或者使它成为除了使用标志之外的地方? – NathanOliver

+2

如何查找命令行如'find。 -name“* .pgm”-exec ./output {} \;'? –

+0

@FredLarson请注意,find命令将按顺序执行。如果有很多文件,可能会优先考虑并行处理 – Aserre

回答

2

for循环遍历字符串列表,而不是遍历目录的内容。您需要将glob扩展到您想要的文件列表。

shopt -s globstar 
for filename in folder/**/*.pgm; do 
    ./output "$filename" 
done 
相关问题