Файлы труб, загруженные с помощью 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() в конце, если это возможно.

Во-первых, предпочитайте использовать 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`;