¿Cómo especificar la ubicación con wget?

695

Necesito que los archivos se descarguen a / tmp / cron_test /. Mi código de wget es

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

Entonces, ¿hay algún parámetro para especificar el directorio?

Léo Léopold Hertz 준영
fuente

Respuestas:

955

Desde la página del 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).

Por lo tanto, debe agregar -P /tmp/cron_test/(forma corta) o --directory-prefix=/tmp/cron_test/(forma larga) a su comando. También tenga en cuenta que si el directorio no existe, se creará.

RichieHindle
fuente
55
-P / tmp / cron_test / no funciona pero elimina / like -P tmp / cron_test / funciona e incluso crea un directorio inexistente.
Kangarooo
77
Kangaroo probablemente no funciona porque no tienes / tmp / cron_test / en tu sistema: P
Sameer Alibhai
41
La descripción del manual hace que esta opción sea difícil de buscar. No pienso en la ubicación donde quiero guardar algo como un 'prefijo de directorio'. ¡Gracias por compartir!
Iain Samuel McLean Élder
77
Además, puede eliminar la carpeta raíz mediante --no-host-directorieso -nHsegún serverfault.com/questions/354792/…
Alien Life Form
-P se ignora si se usa un archivo de entrada con -i alguna idea?
Jan Viehweger
410

-O es la opción para especificar la ruta del archivo que desea descargar.

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

-P es el prefijo donde descargará el archivo en el directorio

wget <file.ext> -P /path/to/folder
RPradeep
fuente
8
Añadiría una barra inclinada para llegar /path/to/folder/allí
Louis Maddox
36
Up votó por especificar también -Oqué no necesitaba, pero me hizo sentir más seguro de que eso -Pera lo que necesitaba.
WORMSS
@louisMaddox según las páginas de manual de mi máquina, el prefijo predeterminado es "." (es decir, el directorio actual) agregar una barra inclinada final al "prefijo de directorio" provocaría un error de doble barra diagonal (es decir, mi / favorito / dir / prefijo //) además, teniendo en cuenta la semántica, el "prefijo de directorio" no requeriría un símbolo final. barra oblicua.
Timothy LJ Stewart
2
@ TimothyL.J.Stewart No hay un error de doble barra.
har-wradim
NB: -Oreemplaza -P, por lo que no puede especificar solo el directorio de salida (think dirname y solo el nombre de archivo de salida (think basename). Para este uso, solo -Oespecifique la ruta completa del archivo.
murlakatamenka
7

Asegúrese de tener la URL correcta para lo que esté descargando. En primer lugar, las URL con caracteres como ?y similares no se pueden analizar y resolver. Esto confundirá la línea cmd y aceptará los caracteres que no se resuelvan en el nombre de la URL de origen como el nombre del archivo que está descargando.

Por ejemplo:

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

se descarga en un archivo denominado, ?source=typ_redirect.

Como puede ver, conocer una o dos cosas sobre las URL ayuda a comprender wget.

Estoy arrancando desde un disco de alquiler y solo tenía Linux 2.6.1 como recurso (la importación del sistema operativo no está disponible). La sintaxis correcta que resolvió mi problema al descargar un ISO en el disco duro físico fue:

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

Uno podría calcular la URL correcta al encontrar en qué punto se wgetdescarga en un archivo llamado index.html(el archivo predeterminado) y tiene el tamaño correcto / otros atributos del archivo que necesita que se muestran con el siguiente comando:

wget "(source url)"

Una vez que la URL y el archivo fuente son correctos y se están descargando index.html, puede detener la descarga ( ctrl+ z) y cambiar el archivo de salida usando:

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

después de la fuente url.

En mi caso, esto resulta en descargar un ISO y almacenarlo como un archivo binario debajo isofile.iso, que con suerte se monta.

Compromper
fuente
2

"-P" es la opción correcta, siga leyendo para obtener más información relacionada:

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

Fragmentos relevantes de páginas de manual para mayor comodidad:

   -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
fuente
1

wget man: -O archivo --output-document = archivo

wget "url" -O /tmp/cron_test/<file>
megamind
fuente
1
No es una respuesta, porque la opción -o coloca el archivo dounloaded en el archivo especificado. Pero la pregunta es "¿Cómo poner el archivo en una carpeta". Y esto es una respuesta duplicada existe
Anton Gorbunov