Лингвофорум

Общий раздел => Наука и техника => Компьютеры => Тема начата: dragun97yu от апреля 5, 2014, 10:57

Название: Скриптоводство
Отправлено: dragun97yu от апреля 5, 2014, 10:57
Есть файлы на жёстком диске с именами вида aaaaaa_thumb.jpg
Задача: выкачать файлы, которые находятся по адресу example.com/photo/aaaaaa.jpg
Вопрос: как это можно устроить sed'ом и ls'ом?
Неплохо б, если б ещё объяснили, как работает скрипт.
Название: Скриптоводство
Отправлено: Triton от апреля 5, 2014, 11:12
Цитата: dragun97yu от апреля  5, 2014, 10:57
Есть файлы на жёстком диске с именами вида aaaaaa_thumb.jpg
Задача: выкачать файлы, которые находятся по адресу example.com/photo/aaaaaa.jpg

Дано:

$ ls
10_thumb.jpg  12_thumb.jpg  14_thumb.jpg  16_thumb.jpg  18_thumb.jpg  1_thumb.jpg   2_thumb.jpg  4_thumb.jpg  6_thumb.jpg  8_thumb.jpg
11_thumb.jpg  13_thumb.jpg  15_thumb.jpg  17_thumb.jpg  19_thumb.jpg  20_thumb.jpg  3_thumb.jpg  5_thumb.jpg  7_thumb.jpg  9_thumb.jpg


Решение (слово echo из команды убрать) :

$ find . -iname '*.jpg' -type f | sed -e 's|^\./||' -e 's|_thumb.*||' | xargs -I % echo wget http://example.com/photo/%.jpg
wget http://example.com/photo/20.jpg
wget http://example.com/photo/19.jpg
wget http://example.com/photo/18.jpg
wget http://example.com/photo/17.jpg
wget http://example.com/photo/16.jpg
wget http://example.com/photo/15.jpg
wget http://example.com/photo/14.jpg
wget http://example.com/photo/13.jpg
wget http://example.com/photo/12.jpg
wget http://example.com/photo/11.jpg
wget http://example.com/photo/10.jpg
wget http://example.com/photo/9.jpg
wget http://example.com/photo/8.jpg
wget http://example.com/photo/7.jpg
wget http://example.com/photo/6.jpg
wget http://example.com/photo/5.jpg
wget http://example.com/photo/4.jpg
wget http://example.com/photo/3.jpg
wget http://example.com/photo/2.jpg
wget http://example.com/photo/1.jpg

Название: Скриптоводство
Отправлено: dragun97yu от апреля 6, 2014, 00:56
После -I требует аргумента.
Вместо abc123.jpg забивает в запрос wget'а %25.jpg
Что я делаю не так?
Название: Скриптоводство
Отправлено: Triton от апреля 6, 2014, 00:59
Цитата: dragun97yu от апреля  6, 2014, 00:56
После -I требует аргумента.
Вместо abc123.jpg забивает в запрос wget'а %25.jpg
Что я делаю не так?
Может оболочка % интерпретирует как-то по своему?

А если так? xargs -I '{}' wget 'http://example.com/photo/{}.jpg'
Название: Скриптоводство
Отправлено: dragun97yu от апреля 6, 2014, 01:08
О-о да, уже теплее, спасибо.
Другая загвоздка - файлы *_thumb.jpg лежат в папке ~/foto/, а запросы на сервер посылает по адресу example.com/photo/foto/*.jpg
Что неправильного?