Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список файлов в директории, ......как его получить? 
:(
    Опции темы
Legafor
  Дата 20.7.2004, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 20.7.2004

Репутация: нет
Всего: нет



Суть проблемы:
есть путь к директории, необходимо получить имена всех файлов в ней хранящихся.
(что-то типа команды dir в ДОСе, только она еще и имена директорий выводит, это не нужно)
Подскажите пожалуйста, как реализовать на Perl.
Спасибо заранее.

PM MAIL   Вверх
Secandr
Дата 20.7.2004, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



opendir
readdir
closedir


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
GoodBoy
Дата 20.7.2004, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Код
my @arr = glob('/путь/к/каталогу/*.*');



--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Secandr
Дата 20.7.2004, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



вот тут два скрипта.
http://forum.vingrad.ru/index.php?showtopic=26477


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
dimes
Дата 20.7.2004, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 20.7.2004
Где: то около СПБ

Репутация: нет
Всего: 14



Цитата(GoodBoy @ 20.7.2004, 09:56)
Код
my @arr = glob('/путь/к/каталогу/*.*');

Я могу ошибаться, но по-моему это не вернет файлы без расширения и скрытых файлов

возможно проще зделать так:
Код

my $d_path="dir";
opendir(dir,$d_path) or print $!;
my @arr=grep { -f  $d_path."/".$_} readdir(dir);
closedir(dir);

PM ICQ   Вверх
GoodBoy
Дата 20.7.2004, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Цитата(dimes @ 20.7.2004, 11:36)
Цитата(GoodBoy @ 20.7.2004, )
Код
my @arr = glob('/путь/к/каталогу/*.*');

Я могу ошибаться, но по-моему это не вернет файлы без расширения и скрытых файлов


можно попробовать так:
Код
my @arr = glob('/путь/к/каталогу/*');


Это сообщение отредактировал(а) GoodBoy - 20.7.2004, 10:59


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Legafor
Дата 20.7.2004, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 20.7.2004

Репутация: нет
Всего: нет



Спасибо большое, проблема решена........... smile.gif

Код

my @arr = glob('/путь/к/каталогу/*.*');
- возвращает имена всех файлов


Код

my @arr = glob('/путь/к/каталогу/*');
- возвращает имена всех файлов и директорий


Еще раз спасибо!


Это сообщение отредактировал(а) Legafor - 20.7.2004, 11:31
PM MAIL   Вверх
korob2001
Дата 20.7.2004, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата

Спасибо большое, проблема решена...........

Э-эээ подожди. Дело в том, что вариант с glob менее эфективен чем opendir(), readdir() и closedir(). Если в каталоге будет слишком много файлов, то glob не вернёт все файлы, так как она имеет ограничение на кол-во файлов, в отличии от readdir().

Это сообщение отредактировал(а) korob2001 - 20.7.2004, 17:03


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Secandr
Дата 21.7.2004, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



Я привёл ссылку на скрипт, в котором идёт поиск всех файлов в данном и во вложеных каталогах. А упростить его дело не трудно smile.gif


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
y0sh1
Дата 26.8.2004, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 26.8.2004

Репутация: нет
Всего: нет



Как подсчитать в директории объём всех файлов скажем с расширением *.doc!? Те по маске...
Заранее спасибо!
PM MAIL   Вверх
korob2001
Дата 26.8.2004, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата

Как подсчитать в директории объём всех файлов скажем с расширением *.doc!? Те по маске...
Заранее спасибо!

Помоему это уже другая тема. Если есть желание что бы кто-нибудь ответил, создайте новую тему.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
GoodBoy
Дата 26.8.2004, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Код
my $size = 0;
$size += (stat($_))[7] for (glob('/путь/к/каталогу/*.doc'));
print "Общий размер файлов *.doc - $size байт";



--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
y0sh1
Дата 26.8.2004, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 26.8.2004

Репутация: нет
Всего: нет



GoodBoy
спасибо... постараюсь прикрутить к основному скрипту...

PM MAIL   Вверх
y0sh1
Дата 30.8.2004, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 26.8.2004

Репутация: нет
Всего: нет



При рекурсивном просмотре директории это делается как-то медлено...
Код
sub dir_ls {
       my $save_dir;
       my $root = shift;
       local *DIR_LS;
       opendir DIR_LS ,$root;
       while (my $file = readdir (DIR_LS) ) {
.............
           if (-d "$root/$file") {
              dir_ls ("$root/$file");
              }
     else {
...............
  }
              }
       }
}

Может есть конструкция работующая быстрее!? Или они в целом более менее равны по быстродействию!?
PM MAIL   Вверх
ElectricalStorm
Дата 30.8.2004, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: нет
Всего: 9



я не думаю что это быстрее ... но зато короче ;)

Код

#!/usr/bin/perl

use strict;

my $dir = $ARGV[0];
print join "\n" ,readDir($dir);

sub readDir {
    my $dir = shift;
    opendir local *D, $dir;
    return
       map  { my $p="$dir/$_"; -d $p?($p,readDir($p)):$p }
       grep { !/^\.\.?$/ } readdir(D);
}



--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1334 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.