Файлы труб, загруженные с помощью 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`; 
  • загрузка изображений с веб-страницы с различными ссылками
  • После загрузки файла .asp или .php его можно преобразовать в .html-файл?
  • wget - Как загрузить веб-страницы на основе шаблона URL?
  • Загрузите рекурсивно с помощью wget
  • Как использовать diff при выполнении wget?
  • В чем смысл «+» в строке выполнения wget?
  • Bash: самый быстрый способ определения размеров изображения из URL-адреса
  • Загрузите все исходные файлы для веб-страницы
  • Как сделать WGET образ из веб-адреса и сохранить его на удаленном ftp-месте в виде cronjob on dd-wrt
  • wget не поддерживает https
  • Возобновить загрузку wget из другого зеркала
  • Linux и Unix - лучшая ОС в мире.