Составление полного списка файлов заданной папки на Perl

Пример скрипта на Perl, который:

1) осуществляет рекурсивное сканирование содержимого заданной папки;
2) сохраняет результаты сканирования (список файлов) в файл.

#!/usr/local/bin/perl

# (c) 2007, mikhail@turenko.net

use strict;

# имя папки для сканирования по умолчанию (. = текущая папка)
my $dir = ".";

# берем имя папки, если задано аргументом командной строки
$dir = $ARGV[0] if defined $ARGV[0];

# вызов процедуры сканирования содержимого папки
my @list = scan_dir ( $dir );

# вызов процедуры сохранения массива в файл
&save_list ( @list );

# --------------------------------------------------------------------
sub scan_dir
# процедура рекурсивного сканирования папки
{

    my ($dir) = @_;
    my @list;
    for my $file (glob($dir.'/*'))
    {

      push @list, $file; # добавляем в массив 1 элемент
      if (-d $file) # если файл является папкой
      {

        my @sub = scan_dir($file);
        push @list, @sub;

      }

    }
    return @list;

}

# --------------------------------------------------------------------
sub save_list
# процедура сохранения списка в файл
{

    my (@list) = @_;
    open(F, '>file_list.txt');
    print F join("\n", @list) . "\n";
    close(F);

}

# --------------------------------------------------------------------
__END__

· Добавьте на news2.ru

Похожие записи:


4 Комментариев »

  1. NeffskiY said,

    Август 8, 2010 @ 13:16

    скрипт зацикливается на одной папке…. сканировал им музыку, он задумался… добавил принт на просмотр папок, он вывел:

    Киборг/2003 - Бритый и Злой
    Киборг/2004 - О Войнах Руси
    Киборг/2004 - Werwolf
    Киборг/2003 - Бритый и Злой
    Киборг/2004 - О Войнах Руси
    Киборг/2004 - Werwolf
    Киборг/2003 - Бритый и Злой
    Киборг/2004 - О Войнах Руси
    Киборг/2004 - Werwolf
    Киборг/2003 - Бритый и Злой
    Киборг/2004 - О Войнах Руси
    Киборг/2004 - Werwolf
    Киборг/2003 - Бритый и Злой
    Киборг/2004 - О Войнах Руси
    Киборг/2004 - Werwolf
    Киборг/2003 - Бритый и Злой
    Киборг/2004 - О Войнах Руси
    Киборг/2004 - Werwolf
    Киборг/2003 - Бритый и Злой
    Киборг/2004 - О Войнах Руси
    Киборг/2004 - Werwolf

  2. Mikhail said,

    Август 8, 2010 @ 22:14

    Проверил ещё раз на сервере с Unix, вроде работает.
    На какой операционной системе проводили тест? Unix или Windows?
    Возможно, glob на windows работает как-то по-другому (?), например, выдаёт “.” в списке файлов в директории…

  3. NeffskiY said,

    Август 13, 2010 @ 16:08

    Ubuntu 10.04… хз, тупо копи-паст…
    уже другой код нашел, рабочий…

  4. Mikhail said,

    Август 13, 2010 @ 18:34

    ок :)

RSS feed for comments on this post · TrackBack URI.

Прокомментируйте