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

  • 相关阅读:
    LVGL V8.2 嵌入式Linux平台使用tslib实现输入接口(以SSD212为例)
    windows下python开发环境的搭建 python入门系列 【环境搭建篇】
    Linux/shell命令
    软件设计模式系列之二十三——策略模式
    快速排序(重点)
    C专家编程 第1章 C:穿越时空的迷雾 1.11 轻松一下---由编译器定义的Pragmas效果
    使用Http Interface客户端解析text/html类型参数
    LeetCode 0228. 汇总区间
    ResNet网络架构
    Java工程师的工资高吗?一般多少钱?
  • 原文地址:https://blog.csdn.net/vempire/article/details/128077426