Программирование > Perl
Поиск файлов в каталоге по "маске"
webser:
СУТЬ ::: Есть каталог с графическими файлами, названными по правилам $id1-$id2-$id3-[какой-то номер от 1 до ...].gif
Переменные $id1, $id2, $id3 известны до осуществления поиска и равны 0005, 33 и 1 соответственно. Пробовал
$dirname = $path."projects/off/"; # указание файла на сервере
opendir (DIR, $dirname);
@tmp_listfile = grep{"$id1-$id2-$id3-*.gif"} readdir(DIR);
closedir (DIR);
Получил
. | .. | 0005-33-1-1.gif | 0005-33-1-2.gif | 0075-60-1-1.gif | 0075-60-1-2.gif | 0076-35-1-1.gif | 0076-35-1-2.gif | 0195-35-1-1.gif | 0195-35-1-2.gif | 0195-35-1-3.gif | 0298-33-1-1.gif | 0298-34-1-1.gif | 0500-36-1-1.gif | 0502-36-1-1.gif | 0503-31-1-1.gif | 0503-31-1-2.gif | 0503-31-1-3.gif | 0504-33-1-1.gif | 0505-34-1-1.gif | 0506-34-1-1.gif | 0507-35-1-1.gif | 0507-35-1-2.gif | 0507-35-1-3.gif | 0508-34-1-1.gif | 0509-33-1-1.gif | 0510-33-1-1.gif | 0510-33-1-2.gif | 0510-33-2-1.gif | 0510-33-2-2.gif | 0511-33-1-1.gif | 0512-34-1-1.gif | 0512-34-1-2.gif | 0512-34-1-3.gif |
Как мне в grep учесть мои переменные, что-бы искал только нужные? и как можно избавиться от уровней вложенности в массиве @tmp_listfile - . и ..
Может можно еще как найти? Проще и легче?....
Заранее благодарен..
P.S.
Сделал так -
@files = glob("$dirname$id1-$id2-$id3-*.gif");
print ">>files ::: ",@files;
Все ищет как надо, только с путями к файлам :
>>files ::: V:/localhost/www/projects/off/0005-33-1-1.gifV:/localhost/www/projects/off/0005-33-1-2.gif
Это решается путем выделения имени файла из всего пути :
for ($i=0;$i>files2 ::: ",@files;
Получаем нужное >>files2 ::: 0005-33-1-1.gif0005-33-1-2.gif
НО НАВЕРНЯКА ЕСТЬ ПУТЬ ПРОЩЕ И ЛЕГЧЕ - ПОДСКАЖИТЕ, ПЛИЗ
Yaroslav:
--- Код: ---while (glob("$dirname$id1-$id2-$id3-*.gif")) {
s/^.*\\///;
print "$_";
}
--- Конец кода ---
Yaroslav:
--- Код: ---chdir($dirname);
while (glob ("$id1-$id2-$id3-*.gif")) {
print "$_ ";
}
--- Конец кода ---
webser:
ДОПОЛНИТЕЛЬНО :::
как одним махом раскидать имя файла, например 0504-33-1-1.gif, на 4 переменные со значениями 0504, 33, 1 и 1?
arto:
split "[.-]"
perldoc -f split
Навигация
Перейти к полной версии