如何使用完整路径打印目录中所有文件的列表?

时间:2013-07-29 20:12:54

标签: perl file directory

我拥有的: 我有一个文件夹,里面有许多其他文件夹和文件。我需要获取一个名为l1的文件夹中所有文件的路径列表。在我的主目录中有许多名为l1的不同文件夹,因此我必须搜索每个l1文件夹并返回其中每个文件的路径。我已经能够打印所有l1文件夹位置的列表,但我不知道如何在这些位置列出文件。我找到所有l1文件夹位置的代码如下。

#!/usr/bin/perl

use strict;
use warnings;
use File::Find;
my @folder;
sub wanted {
    if ( -d && $_ eq 'l1' ) {
        push @folder, $File::Find::name;
    }
}
find \&wanted, '/mnt/vbox_share/';
open fp, ">process.txt";
print fp "@folder";

我需要修改或添加哪些内容才能列出我搜索的文件夹中的所有文件路径?

1 个答案:

答案 0 :(得分:2)

这就是所需要的。

  • wanted忽略除文件,丢弃目录和链接之外的所有内容

  • 执行$File::Find::name时,文件的完整路径位于wanted

  • /上拆分并取最后一个元素$path[-2]找到父目录的名称

  • print完整文件路径,如果该目录等于l1

use strict;
use warnings;

use File::Find;

find( \&wanted, '/path/to/root/dir');

sub wanted {
  return unless -f;
  my @path = split /\//, $File::Find::name;
  print $File::Find::name, "\n" if @path > 1 and $path[-2] eq 'l1';
}