• Perl-->文件的操作


    1,从一个文件的完全路径中找出它的文件名

    #!/usr/bin/perl -w

    use File::Basename;
    $path = "/home/sysadmin/test/aaa.txt.html";
    $basename = basename($path, ".html");
    print $basename . "\n";


    我们只需要把文件的完全路径,还有要剔除的扩展名传给它,如果没有第二个参数,就取出完整文件名。



    2,对目录进行递归搜索


    #!/usr/bin/perl -w

    use File::Find;

    $path = '/home/sysadmin/test';

    find(\&handleFind, $path);

    sub handleFind {
        my $foundFile = $File::Find::name;
        print "$foundFile\n" if ($foundFile =~ /\.html?$/i);
    }




    3,一次读入整个文件内容。


    #!/usr/bin/perl -w

    $path = '/home/sysadmin/test/aaa.txt.html';
    open FH, "< $path";
    $/ = undef;
    $slurp = ;
    print $slurp;


    打开文件的另外一种方法:


    #!/usr/bin/perl

    use warnings;

    $file = '/etc/passwd';

    open PASSWD, "< $file"
     or die "How did you get logged in? ($!)";

    while(){
         print $_;
    }



    4,删除某个目录下的特征文件


    #!/usr/bin/perl -w

    use File::Find;

    $path = '/home/sysadmin/test';

    find(\&wanted, $path);

    sub wanted {  
          if (-f $File::Find::name)  
                 {  
                   if ($File::Find::name=~/\.cvs$/i or $File::Find::name=~/\.jpg$/i)
                       {  
                          print "Removing $File::Find::name\n";  
                                 unlink   $File::Find::name;  
                        }  
                  }  
    }




    5,复制文件或者目录


    #!/usr/bin/perl

    use warnings;

    use File::Copy;

    $source = '/etc/passwd';
    $target = '/usr/local/src';
     
    copy( "$source", "$target" ) or die "Copy failed: $!";


    另外一种方法:

    #!/usr/bin/perl

    use warnings;

    $source = "/home/jive/";
    $target = "/usr/local/src";

    system("cp -rdp $source $target");



    5,移动文件


    #!/usr/bin/perl

    use warnings;

    use File::Copy;

    $source = '/home/sysadmin/lvs';
    $target = '/usr/local/src';

    move( "$source", "$target" ) or die "Copy failed: $!";



    6,找出指定目录下的文件和目录


    $dir = "/home/sysadmin/aa";

    opendir(DIR,"$dir") or die "Can't open the current directory: $!\n";

    @names = readdir(DIR) or die "Unable to read current dir:$!\n";

    closedir(DIR);

    foreach $name (@names) {
        next if ( $name =~ /^\./ );
        if ( -d $name ) {
            print "found $dir directory: $name\n";
            next;
        }
        else {
            print "found $dir file: $name\n";
        }
    }

  • 相关阅读:
    设置HTTP代理隧道
    画分层DFD图的基本原则
    面向对象开发方法
    PHP 魔术常量
    netty系列之:protobuf在UDP协议中的使用
    数据分析实战应用案例精讲-【应用篇】词云分析(附实战案例)
    《信息学奥赛一本通》 , ZJOI2007 tarjan 最大半联通子图
    LeetCode 2656.K个元素的最大和
    详解位段+枚举+联合(接结构体)
    Express框架
  • 原文地址:https://blog.csdn.net/vempire/article/details/128077426