2013-07-29 2 views
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"; 

Что мне нужно изменить или добавить, чтобы быть в состоянии перечислить все пути к файлам, которые находятся в папках я искал?

ответ

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'; 
} 
Смежные вопросы