Necesito descargar un archivo usando wget, sin embargo, no sé exactamente cuál será el nombre del archivo.
https://foo/bar.1234.tar.gz
De acuerdo con la página de manual , wget le permite desactivar y activar el bloqueo cuando se trata de un sitio ftp, sin embargo, tengo una URL http.
¿Cómo puedo usar un comodín mientras uso un wget? Estoy usando gnu wget.
Cosas que he intentado.
/usr/local/bin/wget -r "https://foo/bar.*.tar.gz" -P /tmp
Actualizar
El uso de -A hace que se descarguen todos los archivos que terminan en .tar.gz en el servidor.
/usr/local/bin/wget -r "https://foo/" -P /tmp -A "bar.*.tar.gz"
Actualizar
De las respuestas, esta es la sintaxis que finalmente funcionó.
/usr/local/bin/wget -r -l1 -np "https://foo" -P /tmp -A "bar*.tar.gz"
curl "http://example.com/picture[1-10].jpg" -o "picture#1.jpg"
-e robots=off
parámetro para no obedecer robots.txt: stackoverflow.com/a/11124664/1097104-nH
y--cut-dirs=<number>
también fue útilRespuestas:
Creo que estos interruptores harán lo que quieras con
wget
:Ejemplo
fuente
Hay una buena razón por la que esto no puede funcionar directamente con HTTP, y es que una URL no es una ruta de archivo, aunque el uso
/
como delimitador puede hacer que parezca una, y a veces se corresponden. 1Convencionalmente (o, históricamente), los servidores web a menudo hacen jerarquías de directorios espejo (para algunos, por ejemplo, Apache, esto es una especie de integral) e incluso proporcionan índices de directorio como un sistema de archivos. Sin embargo, nada sobre el protocolo HTTP requiere esto.
Esto es significativo, ya que si se desea aplicar un pegote en decir, todo lo que es una subruta de
http://foo/bar/
, a menos que el servidor proporciona un mecanismo para ofrecerle tales (por ejemplo, el índice antes mencionado), no hay nada para aplicarla al pegote a . No hay un sistema de archivos allí para buscar. Por ejemplo, solo porque sabe que hay páginashttp://foo/bar/one.html
yhttp://foo/bar/two.html
no significa que pueda obtener una lista de archivos y subdirectorios a través dehttp://foo/bar/
. Sería completamente dentro del protocolo que el servidor devuelva 404 para eso. O podría devolver una lista de archivos. O podría enviarte una buena foto jpg. Etc.Entonces, no hay un estándar aquí que
wget
pueda explotar. AFAICT, wget trabaja para reflejar una jerarquía de ruta examinando activamente los enlaces en cada página . En otras palabras, si lo refleja de forma recursiva,http://foo/bar/index.html
se descargaindex.html
y luego extrae los enlaces que son una ruta secundaria de eso. 2 El-A
interruptor es simplemente un filtro que se aplica en este proceso.En resumen, si sabe que estos archivos están indexados en alguna parte, puede comenzar con eso usando
-A
. Si no, entonces no tienes suerte.1. Por supuesto, una URL FTP también es una URL. Sin embargo, si bien no sé mucho sobre el protocolo FTP, supongo que, debido a su naturaleza, puede ser de una forma que permita el bloqueo transparente.
2. Esto significa que podría haber una URL válida
http://foo/bar/alt/whatever/stuff/
que no se incluirá porque de ninguna manera está vinculada a nada en el conjunto de cosas vinculadashttp://foo/bar/index.html
. A diferencia de los sistemas de archivos, los servidores web no están obligados a hacer que el diseño de su contenido sea transparente, ni necesitan hacerlo de una manera intuitivamente obvia.fuente
La solución anterior '-A pattern' puede no funcionar con algunas páginas web. Esta es mi solución, con un doble wget:
wget
la páginagrep
para el patrónwget
Los archivos)Ejemplo: supongamos que es una página de podcast de noticias, y quiero 5 archivos mp3 desde la parte superior de la página:
El
grep
está buscando enlaces sin espacio entre comillas dobles que contienen://
y mi nombre de archivopattern
.fuente
bash
página del manual. ALEATORIO Cada vez que se hace referencia a este parámetro, se genera un entero aleatorio entre 0 y 32767.