Для поиска файлов по именам в Perl используется модуль File::Find::Rule.
Он позволяет искать файлы и папки как по именам, так и с использованием регулярных выражений.
Скачать модуль File::Find::Rule Вы можете как из репозитария своего дистрибутива, так и из CPAN: http://search.cpan.org/~rclamp/File-Find-Rule-0.30/lib/File/Find/Rule.pm
Для поиска директорий используется метод directory, в параметре in которому следует передать путь к начальной папке для поиска:
@subdirs = File::Find::Rule->directory->in( $directory );
На выходе мы получим массив папок.
Для поиска файлов используется метод file:
@files = File::Find::Rule->file()
->name( '*.txt' )
->in( '~' );
print join("\n", @dublicates);
В параметре name следует указать маску искомых файлов, а в in — начальную папку для поиска. Поиск будет производиться рекурсивно во всех подпапках. Выходными данными, как и в случае с поиском папок, будет массив имен найденных файлов.
Также отмечу, что в параметре name помимо маски файла можно задавать регулярные выражения:
->name( qr/\.(txt|pdf)$/ )
В качестве примера могу привести утилиту, удаляющую все файлы, в именах которых сожержится конструкция «_ (число) _».
Скачать пример.
Остались вопросы? Задавайте!
Webmoney Z163628999150, R61715184597
|
Leave a reply