Файлы труб, загруженные с помощью wget в функцию

Я загружаю кучу изображений с помощью wget, и я хочу rm файлы, если они пустые с функцией, с которой я могу передать файл. Мой вопрос заключается в том, как я могу передать изображения следующим функциям:

rmEmpty () { if ! [ -s "$1" ] then rm "$1"; fi } 

Способ загрузки изображений

 wget -q -O- http://www.mtgsalvation.com/forums/creativity/artwork/340782-official-digital-rendering-thread?page=$i | sed -n '{/forum-post-body-content/,/p-comment-notes/p}' | grep -Po 'src="\K[^"]+' | xargs wget -q -T 6 -t 1 

Поэтому мне хотелось бы что-то вроде xargs wget | rmEmpty() xargs wget | rmEmpty() в конце, если это возможно.

3 Solutions collect form web for “Файлы труб, загруженные с помощью wget в функцию”

Во-первых, предпочитайте использовать wget -i - over xargs wget , потому что способ xargs может запускать (последовательно) несколько команд wget (если у вас много URL-адреса для извлечения), а wget -i - запускает только один (и, следовательно, если удаленный сервер поддерживает его, использует ту же TCP-связь).

Написание собственной функции rmEmpty бесполезно, так как find . -empty -type f -delete find . -empty -type f -delete выполнит работу (лучше).

Подводить итоги:

 BASE_URL="http://www.mtgsalvation.com/forums/creativity/artwork/340782-official-digital-rendering-thread?page=$i" wget -q -O- "$BASE_URL" | \ sed -n '{/forum-post-body-content/,/p-comment-notes/p}' | \ grep -Po 'src="\K[^"]+' | wget -i - -q -T 6 -t 1 find . -maxdepth 1 -empty -type f -delete 

Я добавил -maxdepth 1 чтобы избежать проблем, если вы запустите этот скрипт в каталоге с большим количеством подкаталогов (например, в вашем -maxdepth 1 ). Вы должны запустить этот скрипт из выделенного каталога (пустой перед запуском скрипта).

Попробуй это :

 rmEmpty () { if ! [ -s "$1" ] then rm "$1" fi } 

или даже короче:

 rmEmpty() { [ -s "$1" ] || rm -f "$1"; } 

Затем :

 for $file in *; do rmEmpty "$file" done 

Использование правильного анализатора HTML в perl :

 #!/usr/bin/env perl use strict; use warnings; use WWW::Mechanize; use HTML::TreeBuilder::XPath; my $m = WWW::Mechanize->new( autocheck => 1 ); $m->get("http://www.mtgsalvation.com/forums/creativity/artwork/340782-official-digital-rendering-thread?page=1"); my $tree = HTML::TreeBuilder::XPath->new_from_content( $m->content ); my @imgs = $tree->findvalues( '//div[@class="j-comment-body-container p-comment-body forum-post-body-content"]//img/@src' ); `wget -i - -q -T 6 -t 1 @imgs; find . -maxdepth 1 -empty -type f -delete`; 
  • Почему wget --mirror не работает на этом сайте?
  • Уменьшите скорость загрузки wget или curl во время загрузки
  • Как создать локальную копию полного раздела веб-сайта из OSX с помощью wget?
  • Как сделать WGET образ из веб-адреса и сохранить его на удаленном ftp-месте в виде cronjob on dd-wrt
  • Как заставить wget конвертировать * все * загруженные ссылки в относительные?
  • Как узнать, успешно ли завершена загрузка wget?
  • Bash Script - Wget Graphical Download Progress
  • Как скопировать чужие папки с public.me.com с помощью wget-подобного инструмента?
  • Предотвращение зависания wget при обнаружении ошибки 500
  • Как я могу использовать wget для загрузки больших файлов?
  • Загрузите, добавив после некоторого процентного завершения
  • Linux и Unix - лучшая ОС в мире.