Форум программистов, компьютерный форум, киберфорум
Наши страницы
Shell, Bash
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
DigitalGod
4 / 4 / 1
Регистрация: 11.12.2014
Сообщений: 26
#1

Рекурсивное скачивание файлов shell

17.05.2017, 23:21. Просмотров 780. Ответов 3
Метки нет (Все метки)

Доброго времени суток! Получил задачу, которую совершенно не могу решить. Написать скрипт, который получит параметром страницу в интрнете. Скрипт должен её скачать, найти на ней все эмеилы(я думаю поиска по @ достаточно) и сохранить в документ. Потом найти все ссылки(я так понимаю можно сделать это поиском слова href) и скачать все те страницы. Проделать на них тоже самое. Да, скрипт скорее всего будет бесконечным, но это ок. Не знаю как это реализовать, не особо комфортно в такой ситуации, так как во всех прошлых вопросах я просил помочь конкретно с моим кодом. Буду рад как готовому решению, так и любому совету/подсказке.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2017, 23:21
Ответы с готовыми решениями:

Рекурсивное изменение регистра в именах файлов
Есть #!/bin/bash find -type f |grep | while read FILE; do newname=`echo...

Shell, поиск файлов
Здравствуйте, помогите, пожалуйста. Как найти файлы по заданному шаблону без...

Shell: Ошибка при синхронизации файлов
Задача: С помощью rsync файлы перекидываются с сервера А в определенную папку...

Поиск в поддереве текстовых файлов (Shell)
Помогите пожалуйста, не могу разобраться! С помощью одной составной команды...

Скрипт shell
Скрипт, который позволяет вести журнал на спортивную физкультурную ...

3
Marinero
Модератор
Эксперт NIX
2027 / 1643 / 560
Регистрация: 02.03.2015
Сообщений: 5,370
18.05.2017, 14:03 #2
wget умеет скачивать файлы рекурсивно.
Цитата Сообщение от DigitalGod Посмотреть сообщение
скрипт скорее всего будет бесконечным, но это ок.
Совсем не ОК, т.к. рекурсия имеет ограничение по количеству уровней…
Цитата Сообщение от DigitalGod Посмотреть сообщение
найти все ссылки(я так понимаю можно сделать это поиском слова href) и скачать все те страницы
Стоит уточнить этот пункт задания: как бы не пришлось весь интернет скачивать…
0
DigitalGod
4 / 4 / 1
Регистрация: 11.12.2014
Сообщений: 26
18.05.2017, 14:47  [ТС] #3
Marinero,
Ваш второй вопрос отвечает на ваш первый
Я вот примерно написал, тут ещё усложнение с эмеилами либо телефонами. Но пока что не работает
Bash
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
#!/bin/bash
i=0
k=0
while getopts ":m:p:f" opt; do
case $opt in
m ) k=1 ;;
p ) k=2 ;;
f ) uloz=$2 ;;
esac
main() $1
 
main() {
  i=$(( i + 1 ))
  file="filename[$i]"
  wget -qO "$file" "$1"
  if [ $k -eq 1 ]
  then
  grep "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$" "$file" >> "$uloz"
  else
  grep "[0-9]\{3\}[ -]\?[0-9]\{3\}[ -]\?[0-9]\{4\}" "$file" >> "$uloz"
 fi
  grep "\w+://(\w+\.)*\w+\.\w{2,4}((/(\w|[~-])+)*(/\w+\.\w+))?" | while read url
    do main() "$url"
  done
  rm "$file"
}
0
Marinero
Модератор
Эксперт NIX
2027 / 1643 / 560
Регистрация: 02.03.2015
Сообщений: 5,370
18.05.2017, 15:20 #4
Лучший ответ Сообщение было отмечено DigitalGod как решение

Решение

DigitalGod, Функции объявлять до вызова надо.

Добавлено через 10 минут
Цитата Сообщение от DigitalGod Посмотреть сообщение
Bash
1
while getopts ":m:p:f" opt; do
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while getopts ":mpf:" opt ; do
    case $opt in
        m) pattern='^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$' ;;
        p) pattern='[0-9]\{3\}[ -]\?[0-9]\{3\}[ -]\?[0-9]\{4\}' ;;
        f) uloz=$OPTARG ;;
    esac
done
 
main() {grep "$pattern" "$file" >> "$uloz"}
main "$OPTARG"
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2017, 15:20

Задача shell
Здравствуйте!! Очень нужна помощь в решении задачи. Я, к сожалению, почти...

Shell-процедура
Написать shell-процедуру, которая: • В каталоге, имя которого вводится с...

Ошибка в shell
Помогите найти в чем проблема - с 14 строки, не заходит в else и все время...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru