Forum  

Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны
  Форум сайта "Linux для начинающих" > Категории > Программирование

Программирование Программирование в Linux

 
Опции темы Опции просмотра
  #1  
30.08.2011, 10:37
adm
Administrator
 
Регистрация: 03.03.2011
Сообщений: 27
создание скрипта сортировки на bash

Всем привет! Недавно на почту нашего сайта пришло письмо, где кроме прочего присутствовало пожелание нашего постоянного читателя. Прямо целое задание по программированию. Я надеюсь есть люди, которые в этом сильны и готовы помочь. Это не является проблемой, это является возможностью продвинуть прогресс чуточку вперёд. Вот отрывок письма, который по сути является самим заданием:

"Я заядлый рыбак. Но не только тот, что сидит на реке или озере ранним утром. А тот, что ловит файлы прямо из космоса, точнее со спутника который передаёт данные пользователям. Я очень люблю книги я заядлый коллекционер, но коллекционер электронных книг.
Ну и в связи с этим и проблема, которую я не могу решить такое долгое время, это проблема мусора, то-есть проблема не нужных файлов, которые так, скажем, "налавливаются" со спутникового потока. Хотя в программе для рыбалки и есть фильтры позволяющие фильтровать поток на те или иные расширения. Ну, например, ловить только .rar или .rar и .zip и так далее. Мусора всё ровно много потому как не знаешь что там в этом архиве вирус, какая то ненужная мне программа, видео, или то, что мне нужно электронные книги. Вот и приходится сидеть по долгу распаковывать эти архивы смотреть их содержимое и в ручную всё это перебирать. Книги попадаются очень редко ну за сутки от 3 до 10 иногда больше ну это случается крайне редко может раз в 3 или 4 месяца поймаешь крупный архив ну скажем 60 – 100 книжек за это лето такое случилось все раз, но всё таки случается иногда. Так что часть полезной информации довольна, мала, допустим 300 .zip архивов надо вскрыть руками, что бы отыскать в них всего 5 -6 книг и это каждый день.
Вот и пришла мысль создать небольшой скрипт на языке Bash, что бы он автоматом запускался, допустим, раз в сутки и делал сортировку автоматом. Можно сэкономить уйму времени.
Одна проблема. Я знаю немного php5, но совсем ничего не понимаю в Bash, потому что опять таки нет доступной на русском языке информации с примерами. А лучше целой книги. Очень интересует сам синтаксис языка, в примерах.
Ну вот, в голове так немного пораскинув мозгами, думаю, алгоритм сортировки должен выглядеть примерно так.
1) В 3 часа дня скрипт стартует.
2) Переходит в указанную папку, содержащую архивы, а лучше, чтобы сначала в одну после завершения её перебора шёл в другую, например, сначала только папка с zip архивами затем c rar.
3) Далее скрипт должен создать папку, естественно для будущих файлов и не одну, а две. В одну он будет распаковывать архивы и если будет выявлено совпадение - копировать совпавшие файлы в другую папку, которую он должен именовать по дню и времени запуска самого скрипта.
4) Далее, при помощи цикла, скрипт должен делать некоторые операции.
А именно - открыть первый архив, находящийся в папке, то есть распаковать его, во временную папку, которую только что создал.
5) Затем проверить то, что только что извлёк, на наличие полезных расширений, а именно текстовых, это наверное можно сделать при помощи регулярного выражения которое должно находиться в теле цикла который будет перебирать распакованные файлы, но это еще не все. Если вдруг, а такое случается, что архив содержит вложенный архив, скрипт должен провести все операции повторно еще и с ним. То есть скрипт должен проверять архив не только на текстовые файлы, но и еще на файлы архивов, которые могут оказаться внутри.
6) Полезные текстовые расширения скрипт должен копировать в папку с именем дня и времени запуска, которую должен был создать в начале сценария. Хотя здесь интересный момент, а вдруг вообще в архивах не будет найдено полезных файлов, тогда ничего создавать не нужно. Но это я думаю пока можно опустить, чтобы не усложнять код.
7) После чего из временной папки должно быть всё удалено и операция должна повторяться вновь уже со следующим архивом.
8) И так циклично, пока не будут перебраны все архивы в каталоге, содержащим zip - пы.
9) Далее переходим в следующую указанную папку, но уже с архивами rar.
10) И всё повторяем, но на этот раз уже не создаём временную папку для распаковки и для отсортированных файлов ведь они уже созданы. А лишние каталоги не к чему.
11) Заканчиваем работу.
И еще одно упустил: желательно, чтобы скрипт вел отчет, ну например, создавал текстовый файл, ложил его в папку с отсортированными файлами, мол, найден такой то файл в таком то архиве, чтобы недоверчивый пользователь всегда мог проверить, что и откуда. Ну тут уже совсем фантастика еще лучше чтобы в отчёте содержалось не только имя архива и имя извлечённого файла. Но и скажем ip адрес ресурса, откуда шёл данный архив его можно узнать просто по имени архива, так как программа ловли, перед тем как записать пойманный файл в каталог, ищет его имя, алгоритм поиска мне не известен. Однако имена пойманных файлов имеют вид
18bd5c5cbd_48673_213.180.204.35.zip
18bd5c5cbd_54411_87.250.250.35.zip
18bd5c5cbd_54442_94.100.179.127.zip
Тут не сложно догадаться, что последние цифры это, 213.180.204.35 , 87.250.250.35 , 94.100.179.127 это ip источника файла.

Эта информация нужна для более точной настройки программы удочки. Потому как там есть фильтр по ip адресам.
Вот эту программу, я просто уверен, ищут многие люди. Если создать ее код и подробно расписать, что к чему и выложить в отдельной теме на сайте это может привлечь некоторое количество людей."

Поможем ведь, правда?
  #2  
04.09.2011, 09:57
Аватар для DragoN
DragoN
Moderator
 
Регистрация: 03.03.2011
Адрес: Чита
Сообщений: 35

помоему есть что-то подобное, раньше я занимался грабом тоже и написал большой файл сортировки файлов. позже напишу побольше информации.
  #3  
04.09.2011, 09:59
Аватар для DragoN
DragoN
Moderator
 
Регистрация: 03.03.2011
Адрес: Чита
Сообщений: 35

Цитата:
5) затем проверить то, что только что извлёк, на наличие полезных расширений, а именно текстовых
необязательно распаковывать, можно просто посмотреть его даже текстовым файлом, в начале файла пишется его расширение и имя вроде!

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 22:13. Часовой пояс GMT.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd. Перевод: zCarot
Skin Developed By vBskin.Net