Pipe files descargados con wget en una function

Estoy descargando un montón de imágenes con wget y quiero registrar los files si están vacíos con una function a la que puedo pasar el file. Mi pregunta es cómo puedo canalizar las imágenes a una function como esta:

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

La forma en que descargo las imágenes es

 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 

Entonces me gustaría algo como xargs wget | rmEmpty() xargs wget | rmEmpty() al final, si eso es posible.

Primero, prefiera usar wget -i - sobre xargs wget , porque el método xargs podría ejecutar (secuencialmente) varios commands wget (si tiene mucho URL para recuperar) mientras que el wget -i - ejecutará solo uno (y por lo tanto, si el server remoto lo admite, usa la misma connection TCP).

Escribir su propia function rmEmpty es inútil, ya que find . -empty -type f -delete find . -empty -type f -delete hará el trabajo (mejor).

Para resumir:

 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 

He agregado el -maxdepth 1 para evitar problemas si ejecuta este script en un directory con muchos subdirectorys (su $HOME por ejemplo). Debe ejecutar este script desde un directory dedicado (vacío antes de ejecutar el script).

Prueba esto :

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

o incluso más corto:

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

Entonces :

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

Usando un analizador de HTML apropiado en 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`;