Автор Тема: сортировка файлов в каталоге  (Прочитано 8431 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн domashniy

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
сортировка файлов в каталоге
« : 24 Февраля 2005, 12:54:39 »
Естьт такая проблема,  не програмер я и тяжко, помогите.
Нужно отсортировать все файлы в каталоге по убыванию, если известно что 2 первых слова постоянны, а меняется только 3-е слово (чило) (example.tests.1.zip, example.tests.2.zip)
После того как отсортируется, нужно запустить програму и выполнить разорхивирование, начиная с самого большого чилса и до самого маленького.
Прочитал тут кучу примеров, вроде все просто и понятно, но так ничего и не получилось.

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
сортировка файлов в каталоге
« Ответ #1 : 24 Февраля 2005, 13:26:26 »
domashniy
Цитировать
Нужно отсортировать все файлы в каталоге по убыванию

Цитировать
После того как отсортируется, нужно запустить програму и выполнить разорхивирование

 сам то понял что написал? :)

сформулируй вопрос правильно...
And no religion too...

Оффлайн domashniy

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
сортировка файлов в каталоге
« Ответ #2 : 24 Февраля 2005, 13:36:17 »
есть каталог и внем такие файлы
example.tests.1.zip
example.tests.2.zip
example.tests.3.zip
example.tests.4.zip
нужно прочесть все фалы из этот каталого с расширением .zip
дальше разархивировать все эти фалы по убыванию циферок, т.е.
pkunzip example.tests.4.zip
pkunzip example.tests.3.zip
pkunzip example.tests.2.zip
pkunzip example.tests.1.zip

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
сортировка файлов в каталоге
« Ответ #3 : 24 Февраля 2005, 13:42:49 »
domashniy
и это все сделать одним перловым скриптом?
если да... :
то ещё скажи какая у тебя платформа (Unix/Win)?
And no religion too...

Оффлайн domashniy

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
сортировка файлов в каталоге
« Ответ #4 : 24 Февраля 2005, 13:50:57 »
win, но можно и под unix

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
сортировка файлов в каталоге
« Ответ #5 : 24 Февраля 2005, 14:02:53 »
domashniy
1. opendir #perldoc -f opendir
2. readdir #perldoc -f readdir
3. sort #perldoc -f sort
4. use Shell #perldoc Shell (http://search.cpan.org/~nwclark/perl-5.8.6/lib/Shell.pm)
5. closedir #perldoc -f closedir
если что не понятно... могу подробнее прокоментировать...
And no religion too...

Оффлайн domashniy

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
сортировка файлов в каталоге
« Ответ #6 : 24 Февраля 2005, 14:31:34 »
ага я рад что ты умеешь пользоваться манами, более того наверно и писать умееш по этим манам, и что ?.....

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
сортировка файлов в каталоге
« Ответ #7 : 24 Февраля 2005, 14:54:58 »
domashniy за тебя написать?
The documentations is your friend

Оффлайн synthez

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 104
  • +0/-0
  • 0
    • Просмотр профиля
сортировка файлов в каталоге
« Ответ #8 : 24 Февраля 2005, 17:13:38 »
domashniy
а зачем их разпаковывать в по убыванию? =)
Software  like sex - it\'s better when it\'s free

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
сортировка файлов в каталоге
« Ответ #9 : 24 Февраля 2005, 17:53:22 »
действительно непонятно
Цитировать
synthez:
зачем их разпаковывать в по убыванию

а в остальном вот Вам пример:
#!/usr/bin/perl

opendir (G,\'./\') or die $!; @z=grep (/\\.zip/i,readdir G); closedir(G);
print "\\n\\n";
print for sort by_n @z;

sub by_n  { my $aa=(split(/\\./,$b))[2]; my $ab=(split(/\\./,$a))[2]; return ($aa <=> $ab); }
пока-пока. :)

Оффлайн synthez

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 104
  • +0/-0
  • 0
    • Просмотр профиля
сортировка файлов в каталоге
« Ответ #10 : 24 Февраля 2005, 18:35:01 »

#!/usr/bin/perl -w
use strict;

my (@list);

while (
my $file = <*.zip>)
{
	
push @list, $file;
}

foreach 
my $tmp (reverse @list)
{
	
my $dir $tmp;
	
$dir =~ s/\\.zip$//;
	
system("unzip""-x"$tmp"-d""./$dir");


может так?
« Последнее редактирование: 25 Февраля 2005, 09:21:00 от synthez »
Software  like sex - it\'s better when it\'s free

Оффлайн domashniy

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
сортировка файлов в каталоге
« Ответ #11 : 25 Февраля 2005, 07:11:11 »
AnnA
да я почти так же делал, только более нагромажденно и неумело.
Но вот ваш пример не сортирует, вот что получил
a.b.1.zip a.b.10.zip a.b.12.zip a.b.15.zip a.b.2.zip a.b.3.zip a.b.4.zip a.b.5.zip a.b.6.zip a.b.7.zip a.b.8.zip a.b.9.zip
а нужно так
a.b.15.zip a.b.12.zip a.b.10.zip a.b.9.zip a.b.8.zip a.b.7.zip a.b.6.zip a.b.5.zip a.b.4.zip a.b.3.zip a.b.2.zip a.b.1.zip
NeoNox
да именно написать, как я уже выша сказал я не умею програмировать, и если вы тут все програмеры, то почему бы не помочь ? больше пустых разговоров...ведь написать как AnnA пару строк кода не сложно? да ведь ?

Оффлайн synthez

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 104
  • +0/-0
  • 0
    • Просмотр профиля
сортировка файлов в каталоге
« Ответ #12 : 25 Февраля 2005, 09:23:19 »
domashniy
да зачем тебе чтобы они лежали отсортированые по убыванию?
смотрятся что ли красивее?
Software  like sex - it\'s better when it\'s free

Оффлайн domashniy

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
сортировка файлов в каталоге
« Ответ #13 : 25 Февраля 2005, 09:56:13 »
мне не нужно чтобы они лежали отсортированными ;)) мне нужно их разархивировать в таком отсортированном порядке, а после еще и обработать уже распакованные файлы.
Но сейчас для меня самая большая проблема что не сортируется ;(((
спасибо за пример, но это немножко не то что мне нужно.

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
сортировка файлов в каталоге
« Ответ #14 : 25 Февраля 2005, 11:50:26 »
domashniy
очень странно. смотрите:#!/usr/bin/perl

#opendir (G,\'./\') or die $!; @z=grep (/\\.zip/i,readdir G); closedir(G);
@z=qw(a.b.1.zip a.b.10.zip a.b.12.zip a.b.15.zip a.b.2.zip a.b.3.zip a.b.4.zip a.b.5.zip a.b.6.zip a.b.7.zip a.b.8.zip a.b.9.zip);
print 
"\\n\\n";
print 
"\\n"$_ for sort by_n @z;

sub by_n  my $aa=(split(/\\./,$b))[2]; my $ab=(split(/\\./,$a))[2]; return ($aa <=> $ab); }

perl readdir.cgi
a.b.15.zip
a.b.12.zip
a.b.10.zip
a.b.9.zip
a.b.8.zip
a.b.7.zip
a.b.6.zip
a.b.5.zip
a.b.4.zip
a.b.3.zip
a.b.2.zip
a.b.1.zip

А приведенный Вами листинг файлов получается, если воспользоваться вариантом
synthez
или в моем примере убрать by_n, т.е. написать так:
print "\\n", $_ for sort @z; а не так, как было:
print "\\n", $_ for sort by_n @z;
мой пример полностью рабочий. видимо Вы что-то «нахимичили» коприуя или подключая его. :) может покажете весь кусочек кода, который выдал Вам такой листинг файлов, а то гадать - дело неблагодарное. ;)
пока-пока. :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28