Extrai todos os arquivos após o download do wget

1

Estou usando o wget para baixar uma lista de arquivos de um URL, aqui está o meu comando:

wget --user='username' --password='mypassword' -i  url.txt

Isso faz o download de uma lista de .gz files

O que preciso fazer é:

  1. Antes de fazer o download, exclua todos os arquivos no diretório
  2. Após o download, descompacte todos os arquivos e exclua os zipados

Existe um comando ou lista de comandos que podem realizar isso que eu posso inserir em um cronjob? Eu preciso correr isso uma vez por dia.

Obrigado

    
por jc.yin 27.11.2013 / 20:10

2 respostas

1

Vamos tentar um one-liner:

rm -rfi * && wget -q -O - --user='username' --password='mypassword' -i  url.txt | wget - && find . -name "*.zip" -exec "unzip && rm" {} \;

Não hesite em editar / adaptar: isso pode ser realmente errado, já que nem sempre estou muito à vontade com o - pseudo-descritor e como cada aplicativo lida com ele.

Alguns detalhes

Limpar o diretório atual.

rm -rfi *

Obtenha a lista, mas, em vez de enviar o conteúdo para um arquivo, redirecione-o para stdout (usando -q , -O e o pseudo-descritor - ).

wget -q -O - --user='username' --password='mypassword' -i  url.txt 

Faça o download dos nomes dos arquivos que estão sendo enviados da chamada anterior wget . Novamente, - makes se refere à entrada padrão, que também é a saída do comando anterior.

wget -

Encontre todos os arquivos zip no diretório e execute unzip e rm em cada um deles.

find . -name "*.zip" -exec "unzip && rm" {} \;
    
por John WH Smith 27.11.2013 / 20:38
-1

Esta é mais uma questão * nix do que centrada no Ubuntu.

Em geral, você escreveria um script (usando a linguagem bash, ou talvez Python) que lida com a tarefa que você descreve. Uma linha do script seria o seu comando, acima ... o resto iria lidar com a inspeção do diretório, exclusão, descompactação etc.

Então você apenas usaria o cron (google up crontab) para definir o script para ser executado em horários específicos.

    
por Mike W 27.11.2013 / 20:20