kangyu的个人博客分享 http://blog.sciencenet.cn/u/kangyu

博文

使用perl将当前目录中子目录下的相应文件拷贝到一个文件夹中

已有 10553 次阅读 2012-11-23 13:34 |个人分类:perl|系统分类:科研笔记| Perl, 文件处理

  对于分类的文件夹下又有子文件夹,如果要将所有子文件夹下的相应文件取出来,通过切换文件夹,不断Ctrl+C和Ctrl+V是一种让手疼的办法。而用perl就只要将下面的脚本放到当前文件夹下,在命令行中执行就可以替代手疼的方法。下面是代码,希望高手们有更好的方法和大家分享。
#############################
#!/usr/bin/perl -w
# 当前文件夹下所有的文件存入数组中
my @allFiles=glob("*");
# 执行循环,每个文件都要判断是否为目录
foreach my $subdir(@allFiles) {
   next unless (-d $subdir);
   # 如果是目录则打开目录句柄
   opendir(DIR, $subdir);
   # 从目录句柄中读取目录中的文件
   @fileName=readdir(DIR);
   # 关闭目录句柄
   closedir DIR;
   # 判断打开是否成功
   print "Dir is: $subdir:n";
   
   # 进入每个目录中,loop所有的文件,然后对文件进行处理。
   # ".\"是Windows系统中当前目录
   # 如果是Linux系统下,则当前目录用”./"
   chdir(".\$subdir");
   foreach my $file(@fileName) {
        # 如果这些文件名能够匹配,则将这个文件cp到特定文件夹中
       if ($file =~ /$pattern/) {
            print $file, "n";
            # copy相应文件到文件夹D:/test/中
            `cp $file D:\test\`
       } else {
           next;
       }
   }
   # 还原上一级目录
   chdir("..\");
}

###############################



http://blog.sciencenet.cn/blog-803390-635452.html

上一篇:Linux sftp用法
下一篇:根据bwa比对的SAM初步估计片段大小

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-10-24 17:52

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部