Xpoint
   [напомнить пароль]

Исключить . и .. из списка файлов

Метки: [без меток]
2006-05-31 02:22:11 [обр] fetis(0/82)[досье]

Пытаюсь составить выражение, которое возвращало бы имя файла. Написал что-то вроде [\w. ]+ и никак не могу догнать, как исключить . и ..

Тестовые данные

.
..
file.ext
.file
f
ff
спустя 19 минут [обр] fetis(0/82)[досье]
Вдогонку, имя файла парсится из следующего выражения (результат команды dir)
05/14/2006  00:59              3009 file.ext
спустя 5 часов [обр] Дворнов Роман(3/109)[досье]
my $filename = (split /\s+/, $str)[-1];
if ($filename !~ /^\.\.?$/)
{
  # do something
}
в $str лежит "05/14/2006 00:59 3009 file.ext"
спустя 21 минуту [обр] Роман Чемисов(16/350)[досье]
fetis[досье]
А файлов с пробелами в имени не будет?
спустя 43 минуты [обр] Lynn «Кофеман»(0/571)[досье]
А может проще изучить help dir?
По-моему dir /b должен дать то, что надо.
спустя 4 часа 36 минут [обр] fetis(0/82)[досье]

Lynn «Кофеман»[досье] /b не говорит размер файла и дату.
Роман Чемисов[досье] Почему не будет? Будет, любое нормальное имя файла.

Вот такой шаблон (?!(\.\.|\.$))[\w. ]+ правильно отрабатывает на тестовых данных, но в боевых условиях захватывает пробелы перед .. и .

Интересует решение именно при помощи регулярных выражений.

спустя 18 минут [обр] Алексей В. Иванов(17/2861)[досье]
for (`dir`) {
   chomp;
   my ($date, $time,$size,$name) = split(/\s+/, $_, 4);
   if ($date && $name && $name !~ /^\.\.?$/) {
      print "[$date,$time,$size,$name]\n";
   }
}
спустя 2 часа 43 минуты [обр] Закиров Руслан(12/343)[досье]

Мне кажется, что perldoc File::Find входит в состав perl давно. И парсить вывод dir бессмыслено.

Для тех кто негативно относиться к модулям:
perldoc -f opendir
perldoc -f readdir
perldoc -f closedir

Статы файла получаются perldoc -f stat

my @stats = stat($filename);
my ($size, $mtime) = @stats[7, 9];
спустя 2 часа 14 минут [обр] fetis(0/82)[досье]

Немного поясню, стоить задача залить структуру каталогов с локльного компьютера в базу на сервере. В перспективе структура будет передаваться в виде xml-файла, который будет создавать клиентская программа на компьютере пользователя. В качестве промежуточного этапа я хочу сделать парсинг результатов команды dir в xml.

Я не пишу на Perl. Спросил в этой теме, потому что она наиболее близка к регулярным выражениям.

спустя 25 минут [обр] Алексей В. Иванов(17/2861)[досье]
Так и надо было говорить с самого начала. Что же Вы через жопу-то делаете, действительно?
В PHP есть все необходимые функции для этого и даже модули.
спустя 49 минут [обр] fetis(0/82)[досье]
Алексей В. Иванов[досье] Не совсем понимаю как мне может помочь PHP установленный на сервере, для создания локального дерева каталогов.
спустя 27 минут [обр] Алексей В. Иванов(17/2861)[досье]
А я в свою очередь не понимаю как результат программы dir оказывается на сервере)
спустя 28 минут [обр] fetis(0/82)[досье]
dir > out.txt
out.txt заливается на сервер.
спустя 1 час 23 минуты [обр] arto(42/497)[досье]
а у меня dir дает совсем другой вывод
спустя 1 час 7 минут [обр] fetis(0/82)[досье]
какой?
спустя 20 минут [обр] Lynn «Кофеман»(0/571)[досье]

У меня такой

2006-май-30  23:27    <DIR>          .
2006-май-30  23:27    <DIR>          ..
2006-фев-26  17:04    <DIR>          Bluetooth Software
2006-мар-17  02:51               459 CBlog.txt
2006-мар-12  20:01                27 error.txt
2006-мар-24  09:20           124 098 invoice.pdf
2006-янв-27  02:40                93 LuResult.txt
2006-апр-02  01:53    <JUNCTION>     MyDocs
2006-май-31  01:14         4 194 304 ntuser.dat
2006-май-31  09:18               600 PUTTY.RND
2006-мар-08  14:38               178 wcx_ftp.ini
2006-май-31  23:36             5 093 wincmd.ini
2006-май-30  23:27             3 370 _viminfo
2004-сен-03  15:56    <DIR>          Главное меню
2006-фев-08  01:25    <DIR>          Избранное
2006-май-30  23:27    <DIR>          Рабочий стол

Что делать будем?

спустя 1 час 55 минут [обр] Закиров Руслан(12/343)[досье]
dir /B /S

Проще на Java сканер написать чем бороться c разными форматами, а так:

^(\S+)\s+(\S+)\s+([1-9][0-9 ]*|<\w+>)\s+.+$

А там уже по именам файлов пройдетесь.

спустя 7 часов [обр] arto(42/497)[досье]
# dir
artur.out ipmitest.c messages slot.all sys_stat.all.after test.txt
artur.out~ ipmitest.d1 messages~ slot.all.after test.pl
err IPSCTL.list messages.old sys_stat.all test.pl~
#
спустя 2 часа 47 минут [обр] fetis(0/82)[досье]

Lynn «Кофеман»[досье] а у меня на работе еще и такой :(

09.06.2004  18:36    <DIR>          addins
30.09.2005  18:37                11 amunres.lsl
09.06.2004  15:14    <DIR>          aod
30.11.2005  20:17    <DIR>          AppPatch

Что это за метка <JUNCTION>? Первый раз такое вижу.

Очевидно идея с парсингом вывода dir была ошибочна, поэтому я вчера на WSH сделал скрипт, который генерит сразу XML :)

спустя 1 час 30 минут [обр] Владимир Палант(98/4445)[досье]
сообщение промодерировано
спустя 6 минут [обр] Роман Чемисов(16/350)[досье]
Владимир Палант[досье]Lynn «Кофеман»[досье]
<offtopic>
Кстати, Вы заметили как мало людей знают о возможностях NTFS? Если честно, то я от NTFS просто в восторге...
</offtopic>
спустя 3 часа 13 минут [обр] fetis(0/82)[досье]
Владимир Палант[досье] Спасибо за ссылки
Powered by POEM™ Engine Copyright © 2002-2005