Como especificar o local com o wget?

694

Eu preciso que os arquivos sejam baixados para / tmp / cron_test /. Meu código wget é

wget --random-wait -r -p -nd -e robots=off -A".pdf" -U mozilla http://math.stanford.edu/undergrad/

Então, existe algum parâmetro para especificar o diretório?

Léo Léopold Hertz 준영
fonte

Respostas:

955

Na página do manual:

-P prefix
--directory-prefix=prefix
           Set directory prefix to prefix.  The directory prefix is the
           directory where all other files and sub-directories will be
           saved to, i.e. the top of the retrieval tree.  The default
           is . (the current directory).

Portanto, você precisa adicionar -P /tmp/cron_test/(formato abreviado) ou --directory-prefix=/tmp/cron_test/(formulário longo) ao seu comando. Observe também que, se o diretório não existir, ele será criado.

RichieHindle
fonte
5
-P / tmp / cron_test / não funciona, mas remove / como -P tmp / cron_test / funciona e até cria um diretório inexistente.
Canguru
7
Kangaroo que o trabalho provavelmente doesnt porque você não tem / tmp / cron_test / no seu sistema: P
Sameer Alibhai
41
A descrição do manual dificulta a pesquisa dessa opção. Não penso no local em que quero salvar algo como um 'prefixo de diretório'. Obrigado por compartilhar!
Iain Samuel McLean Elder
7
Além disso, você pode remover a pasta raiz via --no-host-directoriesou -nHcomo por serverfault.com/questions/354792/...
Estrangeiro Forma de Vida
-P é ignorado se estiver usando um arquivo de entrada com -i alguma idéia?
: 23417 Jan Viehweger
409

-O é a opção para especificar o caminho do arquivo para o qual você deseja baixar.

wget <file.ext> -O /path/to/folder/file.ext

-P é o prefixo em que ele fará o download do arquivo no diretório

wget <file.ext> -P /path/to/folder
RPradeep
fonte
8
Eu adicionar uma barra à direita para torná-lo /path/to/folder/
Louis Maddox
35
A Up votou em especificar também o -Oque eu não precisava, mas me fez sentir mais confiante de que -Pera disso que eu precisava.
WORMSS
@louisMaddox de acordo com as páginas de manual da minha máquina, o prefixo padrão é "." (ou seja, o diretório atual) adicionar uma barra final ao "prefixo do diretório" causaria um erro de barra dupla (ou seja, meu / favorite / dir / prefix //) além disso, considerando a semântica, "prefixo do diretório" não exigiria um final golpear.
Timothy LJ Stewart
2
@ TimothyL.J.Stewart Não há erro de barra dupla.
precisa saber é o seguinte
NB: -Osubstitui -P, então você não pode especificar apenas o diretório de saída (think dirname e apenas o nome do arquivo de saída (think basename). Para esse uso, basta -Oespecificar o caminho completo do arquivo.)
murlakatamenka
7

Verifique se o URL está correto para o que você está baixando. Antes de tudo, URLs com caracteres semelhantes ?e não podem ser analisados ​​e resolvidos. Isso confundirá a linha de cmd e aceitará os caracteres que não forem resolvidos no nome do URL de origem como o nome do arquivo no qual você está baixando.

Por exemplo:

wget "sourceforge.net/projects/ebosse/files/latest/download?source=typ_redirect"

fará o download em um arquivo chamado ?source=typ_redirect,.

Como você pode ver, saber uma coisa ou duas sobre URLs ajuda a entender wget.

Estou inicializando a partir de um disco hirens e só tinha o Linux 2.6.1 como um recurso (o sistema operacional de importação não está disponível). A sintaxe correta que resolveu meu problema ao baixar um ISO no disco rígido físico foi:

wget "(source url)" -O (directory where HD was mounted)/isofile.iso" 

Pode-se descobrir a URL correta, localizando em que ponto o wgetdownload é feito em um arquivo chamado index.html(o arquivo padrão) e possui o tamanho correto / outros atributos do arquivo que você precisa, mostrado pelo seguinte comando:

wget "(source url)"

Depois que o URL e o arquivo de origem estiverem corretos e estiverem sendo baixados index.html, você poderá interromper o download ( ctrl+ z) e alterar o arquivo de saída usando:

-O "<specified download directory>/filename.extension"

após o URL de origem.

No meu caso, isso resulta no download de um ISO e armazená-lo como um arquivo binário isofile.iso, o que é possível montar.

Compromper
fonte
2

"-P" é a opção certa, continue lendo para obter mais informações relacionadas:

wget -nd -np -P / dest / dir --recursivo http: // url / dir1 / dir2

Trechos relevantes das páginas de manual por conveniência:

   -P prefix
   --directory-prefix=prefix
       Set directory prefix to prefix.  The directory prefix is the directory where all other files and subdirectories will be saved to, i.e. the top of the retrieval tree.  The default is . (the current directory).

   -nd
   --no-directories
       Do not create a hierarchy of directories when retrieving recursively.  With this option turned on, all files will get saved to the current directory, without clobbering (if a name shows up more than once, the
       filenames will get extensions .n).


   -np
   --no-parent
       Do not ever ascend to the parent directory when retrieving recursively.  This is a useful option, since it guarantees that only the files below a certain hierarchy will be downloaded.
pr-pal
fonte
1

man wget: -O arquivo --output-document = file

wget "url" -O /tmp/cron_test/<file>
megamind
fonte
1
Não é uma resposta, porque a opção -o coloca o arquivo descarregado no arquivo especificado. Mas a pergunta é "Como colocar o arquivo em uma pasta". E este é duplicado existe resposta
Anton Gorbunov