0

我所拥有的:我有一个文件夹,其中包含许多其他文件夹和文件。我需要获取名为 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";

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

4

1 回答 1

2

这就是所有需要的。

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

  • 文件的完整路径在执行$File::Find::namewanted

  • 将其拆分/并取最后一个元素$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';
}
于 2013-07-29T20:24:49.060 回答