Bagaimana cara menentukan lokasi dengan wget?

695

Saya perlu file untuk diunduh ke / tmp / cron_test /. Kode wget saya adalah

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

Jadi, apakah ada beberapa parameter untuk menentukan direktori?

Léo Léopold Hertz 준영
sumber

Jawaban:

955

Dari halaman 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).

Jadi, Anda perlu menambahkan -P /tmp/cron_test/(form pendek) atau --directory-prefix=/tmp/cron_test/(form panjang) ke perintah Anda. Juga perhatikan bahwa jika direktori tidak ada itu akan dibuat.

RichieHindle
sumber
5
-P / tmp / cron_test / tidak berfungsi tetapi menghapus / seperti -P tmp / cron_test / berfungsi dan bahkan membuat direktori yang tidak ada.
Kangarooo
7
Kanguru mungkin tidak berfungsi karena Anda tidak memiliki / tmp / cron_test / di sistem Anda: P
Sameer Alibhai
41
Deskripsi manual membuat opsi ini sulit untuk dicari. Saya tidak memikirkan lokasi tempat saya ingin menyimpan sesuatu sebagai 'awalan direktori'. Terima kasih telah berbagi!
Iain Samuel McLean Penatua
7
Juga, Anda dapat menghapus folder root melalui --no-host-directoriesatau -nHsesuai serverfault.com/questions/354792/...
Alien Life Form
-P diabaikan jika menggunakan file input dengan -i ada ide?
Jan Viehweger
410

-O adalah opsi untuk menentukan jalur file yang ingin Anda unduh.

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

-P adalah awalan di mana ia akan mengunduh file di direktori

wget <file.ext> -P /path/to/folder
RPradeep
sumber
8
Saya akan menambahkan garis miring untuk membuatnya di /path/to/folder/sana
Louis Maddox
36
Terpilih untuk menentukan juga -Oyang tidak saya butuhkan, tetapi membuat saya merasa lebih percaya diri itulah -Pyang saya butuhkan.
KARYA
@ louisMaddox per halaman manual di komputer saya, awalan default adalah "." (Yaitu, direktori saat ini) menambahkan garis miring ke "awalan direktori" akan menyebabkan kesalahan garis miring ganda (yaitu, / favorit saya / dir / awalan //) selanjutnya, mengingat semantik, "direktori awalan" tidak memerlukan trailing memotong.
Timothy LJ Stewart
2
@ TimothyL.J.Stewart Tidak ada kesalahan garis miring ganda.
har-wradim
NB: -Omenimpa -P, jadi Anda tidak dapat menentukan direktori keluaran saja (pikirkan dirname dan hanya keluaran nama berkas (pikirkan basename) .Untuk penggunaan ini hanya -Omenentukan path file lengkap.
murlakatamenka
7

Pastikan Anda memiliki URL yang benar untuk apa pun yang Anda unduh. Pertama-tama, URL dengan karakter seperti ?dan tidak dapat diuraikan dan diselesaikan. Ini akan membingungkan baris cmd dan menerima karakter apa pun yang tidak diselesaikan ke nama URL sumber sebagai nama file yang Anda unduh.

Sebagai contoh:

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

akan mengunduh ke file bernama ?source=typ_redirect,.

Seperti yang Anda lihat, mengetahui satu atau dua hal tentang URL membantu untuk memahami wget.

Saya mem-boot dari disk hirens dan hanya memiliki Linux 2.6.1 sebagai sumber daya (os impor tidak tersedia). Sintaks yang benar yang memecahkan masalah saya mengunduh ISO ke hard drive fisik adalah:

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

Orang dapat menemukan URL yang benar dengan menemukan pada titik apa wgetunduhan ke file bernama index.html(file default), dan memiliki ukuran / atribut lain dari file yang Anda perlukan ditunjukkan oleh perintah berikut:

wget "(source url)"

Setelah URL dan file sumber itu benar dan sedang diunduh index.html, Anda dapat menghentikan unduhan ( ctrl+ z) dan mengubah file output dengan menggunakan:

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

setelah url sumber.

Dalam kasus saya, ini menghasilkan pengunduhan ISO dan menyimpannya sebagai file biner di bawah isofile.iso, yang mudah-mudahan mount.

Compromper
sumber
2

"-P" adalah opsi yang tepat, baca terus untuk informasi terkait lainnya:

wget -dan -np -P / dest / dir --recursive http: // url / dir1 / dir2

Cuplikan yang relevan dari halaman manual untuk kenyamanan:

   -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.
sobat
sumber
1

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

wget "url" -O /tmp/cron_test/<file>
Megamind
sumber
1
Ini bukan jawaban, karena opsi -o menempatkan file dounloaded dalam file yang ditentukan. Tetapi pertanyaannya adalah "Bagaimana menempatkan file di folder". Dan ini adalah duplikat jawaban ada
Anton Gorbunov