如何使用Perl比较目录名称

时间:2014-08-20 13:44:01

标签: perl

我只想匹配主目录和子目录名称,两个名称是否相等,子目录和主目录名称应与文件名匹配。任何人都可以使用Perl脚本帮助我。

例如:

Main-Directory :XXX
Sub Directory :XXX
File name: XXX

Ans应该是"所有名字都相同"

这是我尝试过的:

#!perl
use Cwd qw(abs_path);

opendir (DIR,'.');
my @folder = readdir(DIR);
foreach my $f (@folder)
{
    next if ($f =~ /\./);
    print "$f\n";

    my $path = abs_path($0);
    opendir (DIR,'$path');
    my @subfolder = readdir(DIR);

    foreach my $sf (@subfolder)
    {
        next if ($sf =~ /\./);
        print "$sf\n";
    }
}

1 个答案:

答案 0 :(得分:0)

use strict;
use File::Find;

sub wanted {
    return unless (-f $_);
    my @path_element=split('/', $File::Find::name);
    print if ($path_element[-1] eq $path_element[-2] && $path_element[-1] eq $path_element[-3]);
}

find(\&wanted,".");

如何运作

找到运行子"想要"在树中的每个文件上。 如果文件是类型" f" (即正常的非目录文件)然后它检查文件,它的目录和目录所在的目录是否具有相同的名称。如果是这种情况,则打印文件名

这并没有准确地给出你所要求的输出,但改变它是非常简单的

你可能需要改变"分裂"在非unix系统上使用不同的路径分隔符

希望这会有所帮助

相关问题