递归目录我已经写一个C++程序,读取在一个文件中并用稍微修改的相同名称的文件输出。现在我需要递归浏览目录(任何包),然后在具有相同目录结构的单独目录中创建文件。制作嵌套/使用Perl
我可以用
@file_list = `find <package directory> -name '*.cpp'`;
浏览到该目录,我想执行这样我的程序:
foreach (@file_list) {
# This gives error as sh: other_dir/./lev1/lev2/filename.cpp: not found
./myexe $_ other_dir/$_;
}
以前我写了这工作好搭配套餐shell脚本将文件放在一个目录中。该脚本如下:
1 #!/bin/bash
2 #echo off
3 rm -rf demac_dir
4 mkdir demac_dir
5 for i in `ls *.h *.cpp`
6 do
7 echo processing file ${i} ...
8 ./main ${i} demac_dir/${i}
9 done
现在我想这样有具有的.cpp和.h文件在嵌套子目录包(即wxWidgets)同样的事情。所以我写了下面的Perl脚本(在ysth的建议之后)。
1 #!/usr/bin/perl -l
2 use File::Path 'make_path';
3 use File::Basename 'dirname';
4
5 `rm -rf demac_dir`;
6 `mkdir demac_dir`;
7 @l1 = `find . -name '*.h'`;
8 @l2 = `find . -name '*.cpp'`;
9 @l3 = `find . -name '*.cc'`;
10 push(@l , @l1, @l2, @l3);
11 foreach (@l) {
12 print "processing file $_ ...";
13 make_path(dirname("demac_dir/$_"));
14 ## `touch touch demac_dir/$_`;
15 `sudo ./main $_ demac_dir/$_`;
16 }
17
的FileHandler.pm和TemplateGenerator.pm是的,我现在越来越嵌套目录。但仍当我执行命令 './myexe $ _ other_dir/$ _'; 我得到了同样的错误 SH:other_dir /./ LEV1/LEV2/filename.cpp:找不到 –
为什么你所期望的文件在那里?你的find命令在''中寻找文件,不管是什么。您的命令是使用'other_dir /'查找找到的路径的前缀。 –
您将不得不显示您的实际代码以获得更多帮助。 – ysth