Perl 查找文件和目录

Perl 查找文件和目录

在Perl中遍历目录树,有几种方式/方法。遍历可以通过函数调用 opendirreaddir 进行,这是Perl编程语言的一部分。在Perl中遍历文件和目录也可以通过Perl语言中的 File::Find 模块来完成。

File::Find 包含两个模块

  • 查找: find() 函数在提到的/定义的@目录上执行深度优先搜索。它为在该目录中发现的每个文件或子目录调用并调用 ” &wanted ” **函数。 **find() 从上到下工作。
  • Finddepth: finddepth() 执行后序遍历,而不是执行预序,从下到上工作。 finddepth() 函数的工作与 find() 函数几乎相似,只是它先调用 **& wanted **目录内容,而不是调用目录。

这两个模块的唯一区别是文件和目录被解析的顺序。Perl中的查找模块具有与Unix 查找 命令类似的所有功能。

查找功能需要两个参数

  • 第一个参数是为我们通过 查找 函数找到的每个文件调用的子程序。
  • 第二个参数是 find 函数要搜索的文件的目录列表。

下面是一些Perl查找文件和目录的脚本例子:

例子1: 要打印搜索到的文件夹中的所有可用目录。

#!usr/bin/perl
print "content-type: text/html\n\n";
  
use strict;
use warnings;
use File::Find;
  
find(
{
    wanted => \&findfiles,
},
'GeeksforGeeks'
);
  
sub findfiles
{
   
    #To search only the directory
    print "$File::Find::dir\n";  
}
exit;

输出:

Perl  查找文件和目录

例2: 打印出一个目录中的可用文件

#!usr/bin/perl
print "content-type: text/html\n\n";
   
use strict;
use warnings;
use File::Find;
   
find(
{
    wanted => \&findfiles,
},
'GeeksforGeeks'
);
   
sub findfiles
{
    
    #To search the files inside the directories
    print "$File::Find::name\n";  
}
exit;

输出:

Perl  查找文件和目录

例3: 只打印一次我们正在访问的文件夹/目录中的所有可用/存在的目录。

#!usr/bin/perl
print "content-type: text/html\n\n";
   
use strict;
use warnings;
use File::Find;
   
find(
{
    wanted => \&findfiles,
},
'GeeksforGeeks'
);
   
sub findfiles
{
    
    # To search all the available directories 
    # in the given directory without accessing them
    print "$File::Find::name\n" if -d;  
  
}
exit;

输出:

Perl  查找文件和目录

例4: 要访问一个目录中的文件,而不访问同一目录中的其他目录。

#!usr/bin/perl
print "content-type: text/html\n\n";
   
use strict;
use warnings;
use File::Find;
   
find(
{
    wanted => \&findfiles,
},
'GeeksforGeeks'
);
   
sub findfiles
{
    # Not accessing Geeks_New and Image directory
    # present inside the dir GeeksforGeeks
    File::Find::prune = 1 if /Geeks_New/;
    File::Find::prune = 1 if /Images/;
      
    # To print the files present in dir GeekforGeeks
    print "$File::Find::name\n";
  
}
exit;

输出:

Perl  查找文件和目录

例5: 使用 finddepth( )函数查找一个目录中的文件和子目录。

#!usr/bin/perl
print "content-type: text/html\n\n";
   
use strict;
use warnings;
use File::Find;
   
finddepth(
{
    wanted => \&findfiles,
},
'GeeksforGeeks'
);
   
sub findfiles
{
    print "$File::Find::name\n";
}
exit;

Perl  查找文件和目录

例6: 要找到所有类型的文本文件。

#!usr/bin/perl
print "content-type: text/html\n\n";
   
use strict;
use warnings;
use File::Find;
   
find(
{
    wanted => \&findfiles,
},
'GeeksforGeeks'
);
   
sub findfiles
{   
    print "$File::Find::name\n" if -T;
}
exit;

输出:

Perl  查找文件和目录

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程