在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2815|回复: 7

[求助] perl的目录操作问题

[复制链接]
发表于 2016-10-25 16:57:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我想完成这么一个操作:
在test目录下面有很多子目录,这些子目录又会有很多子目录,以此类推.......一直往下找,直到不存在子目录为止,将home路径下的一个文件run_tc拷贝到这个目录下面;这种目录可能很多,需要将run_tc拷贝到所有这种目录下面。

大家有什么思路吗?或者直接给出代码或者伪代码.....
发表于 2016-10-25 17:48:50 | 显示全部楼层
利用opendir,readdir,再写递归函数
http://blog.csdn.net/hendyyou/article/details/4545063
发表于 2016-10-25 18:53:25 | 显示全部楼层
回复 1# whwjez


   这种代码感觉挺多的,稍微改改就行。
   大体思路就是建一个函数,用readdir将目录下的各项存到数组里,排除m/^\.|\.\.|\.svn$/,然后foreach该数组如果是有目录就立个flag啥的然后递归调用这个函数往里走,直到没有flag,把这些路径存起来,最后复制文件用system命令做吧。
 楼主| 发表于 2016-10-25 19:21:23 | 显示全部楼层
https://metacpan.org/pod/File::Find
http://bbs.chinaunix.net/forum.p ... =1779330&page=1
这几个网站可能有点用,还要加点东西。
 楼主| 发表于 2016-10-25 19:22:31 | 显示全部楼层
http://bbs.chinaunix.net/forum.p ... =1779330&page=1
https://metacpan.org/pod/File::Find
这些网站可能有点用处,但是还要加点东西
发表于 2016-10-26 09:15:34 | 显示全部楼层
本帖最后由 chenfengrugao 于 2016-10-26 09:19 编辑

回复 1# whwjez

用linux find先列出所有文件和目录,再挑出目录,再拷贝文件。这样就不用写递归函数了。如下。
如果只是run testcase的脚本,建软链接比拷贝更方便。

#!/usr/bin/perl -w

use strict;
use File::Copy;

my @files = `find . -path "*"`;

foreach my $file (@files){
    chomp($file);
    if($file =~ m/^\.$/){ next; }
    elsif($file =~ m/^\.\.$/){ next; }
    elsif((-d $file) && (-w $file)){
    copy("run_tc", $file) || die("Copy fail: $!");
    #system("cp run_tc $file");
    }
}
 楼主| 发表于 2016-10-26 10:04:09 | 显示全部楼层
回复 6# chenfengrugao


   3Q,建立软链接确实是一个好方法。
发表于 2018-1-18 19:57:02 | 显示全部楼层
學習了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 14:56 , Processed in 0.023129 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表