• 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";
        }
    }

  • 相关阅读:
    Java8函数式编程-lambda表达式与stream流
    云服务器怎么买?腾讯云服务器三种购买方法
    Linux入门与进阶(完结篇)
    数据大屏指南 | 一屏看世界,一点选专业
    C#webform Static DataTable 多人同时操作网页数据重复问题
    CANoe面板中的控件:Switch/Indicator
    工厂WMS系统货架位管理:优化仓储效率
    OpenCloudOS开源的操作系统
    一款开源的文件搜索神器,终于不用记 find 命令了
    leetcode解题思路分析(一百二十四)1025 - 1031 题
  • 原文地址:https://blog.csdn.net/vempire/article/details/128077426