Preciso fazer o download de um arquivo usando o wget, no entanto, não sei exatamente qual será o nome do arquivo.
https://foo/bar.1234.tar.gz
De acordo com a página de manual , o wget permite que você ative e desista quando estiver lidando com um site ftp, no entanto, eu tenho um URL http.
Como posso usar um curinga enquanto uso um wget? Estou usando o gnu wget.
Coisas que eu tentei.
/usr/local/bin/wget -r "https://foo/bar.*.tar.gz" -P /tmp
Atualizar
O uso de -A faz com que todos os arquivos que terminem em .tar.gz no servidor sejam baixados.
/usr/local/bin/wget -r "https://foo/" -P /tmp -A "bar.*.tar.gz"
Atualizar
A partir das respostas, esta é a sintaxe que acabou por funcionar.
/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 não robots.txt obedecer: stackoverflow.com/a/11124664/1097104-nH
e--cut-dirs=<number>
também foi útilRespostas:
Eu acho que essas opções farão o que você quiser com
wget
:Exemplo
fonte
Há uma boa razão para que isso não funcione diretamente com HTTP, e isso significa que um URL não é um caminho de arquivo, embora o uso de
/
como delimitador possa parecer um, e às vezes eles correspondem. 1Convencionalmente (ou historicamente), os servidores da Web geralmente refletem hierarquias de diretório (para alguns - por exemplo, Apache - isso é uma espécie de integral) e até fornecem índices de diretório como um sistema de arquivos. No entanto, nada sobre o protocolo HTTP exige isso.
Isto é importante, porque se você deseja aplicar um glob em dizer, tudo o que é um subpath de
http://foo/bar/
, a menos que o servidor fornece algum mecanismo para fornecê-lo com tal (por exemplo, o índice acima referido), não há nada para aplicá-lo a glob para . Não existe um sistema de arquivos para pesquisar. Por exemplo, apenas porque você sabe que existem páginashttp://foo/bar/one.html
ehttp://foo/bar/two.html
não significa que você pode obter uma lista de arquivos e subdiretórios viahttp://foo/bar/
. Seria completamente dentro do protocolo para o servidor retornar 404 para isso. Ou poderia retornar uma lista de arquivos. Ou pode enviar uma boa imagem jpg. Etc.Portanto, não há um padrão aqui que
wget
possa ser explorado. AFAICT, o wget trabalha para espelhar uma hierarquia de caminhos examinando ativamente os links em cada página . Em outras palavras, se você espelha recursivamente,http://foo/bar/index.html
ele baixaindex.html
e extrai links que são um subcaminho disso. 2 O-A
switch é simplesmente um filtro aplicado nesse processo.Em resumo, se você souber que esses arquivos estão indexados em algum lugar, você pode começar usando isso
-A
. Se não, então você está sem sorte.1. É claro que um URL de FTP também é um URL. No entanto, embora eu não saiba muito sobre o protocolo FTP, acho que, com base na natureza, ele pode ter uma forma que permita globbing transparente.
2. Isso significa que pode haver uma URL válida
http://foo/bar/alt/whatever/stuff/
que não será incluída porque não está de forma alguma vinculada a nada no conjunto de itens vinculadoshttp://foo/bar/index.html
. Ao contrário dos sistemas de arquivos, os servidores da Web não são obrigados a tornar o layout de seu conteúdo transparente, nem precisam fazê-lo de uma maneira intuitivamente óbvia.fonte
A solução '-A pattern' acima pode não funcionar com algumas páginas da web. Esta é minha solução alternativa, com um duplo wget:
wget
a páginagrep
para padrãowget
os arquivos)Exemplo: suponha que seja uma página de podcast de notícias e que eu queira 5 arquivos mp3 no topo da página:
O
grep
está procurando por links sem espaço com aspas duplas que contenham://
e meu nome de arquivopattern
.fonte
bash
página de manual. RANDOM Cada vez que esse parâmetro é referenciado, um número inteiro aleatório entre 0 e 32767 é gerado.