Saya perlu mengunduh file menggunakan wget, namun saya tidak tahu persis nama file itu.
https://foo/bar.1234.tar.gz
Menurut halaman manual , wget memungkinkan Anda mematikan dan menghidupkan globbing ketika berhadapan dengan situs ftp, namun saya memiliki url http.
Bagaimana saya bisa menggunakan wildcard saat menggunakan wget? Saya menggunakan gnu wget.
Hal yang sudah saya coba.
/usr/local/bin/wget -r "https://foo/bar.*.tar.gz" -P /tmp
Memperbarui
Menggunakan -A menyebabkan semua file yang berakhiran .tar.gz di server diunduh.
/usr/local/bin/wget -r "https://foo/" -P /tmp -A "bar.*.tar.gz"
Memperbarui
Dari jawaban, ini adalah sintaks yang akhirnya berhasil.
/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
-nH
dan--cut-dirs=<number>
juga bergunaJawaban:
Saya pikir switch ini akan melakukan apa yang Anda inginkan
wget
:Contoh
sumber
Ada alasan bagus bahwa ini tidak dapat bekerja secara langsung dengan HTTP, dan itu adalah bahwa URL bukan path file, meskipun penggunaan
/
sebagai pembatas dapat membuatnya terlihat seperti satu, dan mereka kadang-kadang sesuai. 1Secara konvensional (atau, secara historis), server web sering melakukan hierarki direktori mirror (untuk beberapa - misalnya, Apache - ini semacam integral) dan bahkan menyediakan indeks direktori seperti sistem file. Namun, tidak ada yang perlu tentang protokol HTTP ini.
Ini penting, karena jika Anda ingin menerapkan glob di katakan, segala sesuatu yang merupakan subpath dari
http://foo/bar/
, kecuali server menyediakan beberapa mekanisme untuk menyediakan Anda dengan (misalnya indeks tersebut), tidak ada yang menerapkan glob untuk . Tidak ada sistem file di sana untuk dicari. Misalnya, hanya karena Anda tahu ada halamanhttp://foo/bar/one.html
danhttp://foo/bar/two.html
tidak berarti Anda bisa mendapatkan daftar file dan subdirektori melaluihttp://foo/bar/
. Ini akan sepenuhnya dalam protokol untuk server mengembalikan 404 untuk itu. Atau bisa mengembalikan daftar file. Atau bisa mengirimi Anda gambar jpg yang bagus. DllJadi tidak ada standar di sini yang
wget
bisa mengeksploitasi. AFAICT, wget berfungsi untuk mencerminkan hierarki jalur dengan secara aktif memeriksa tautan di setiap halaman . Dengan kata lain, jika Anda secara mirroring mirrorhttp://foo/bar/index.html
itu mengunduhindex.html
dan kemudian mengekstrak tautan yang merupakan subpath dari itu. 2 The-A
saklar hanyalah sebuah filter yang diterapkan dalam proses ini.Singkatnya, jika Anda tahu file-file ini diindeks di suatu tempat, Anda bisa mulai menggunakan itu
-A
. Jika tidak, maka Anda kurang beruntung.1. Tentu saja URL FTP juga URL. Namun, sementara saya tidak tahu banyak tentang protokol FTP, saya kira berdasarkan sifatnya itu mungkin dari bentuk yang memungkinkan untuk globbing transparan.
2. Ini berarti bahwa mungkin ada URL
http://foo/bar/alt/whatever/stuff/
yang valid yang tidak akan dimasukkan karena sama sekali tidak terkait dengan apa pun dalam rangkaian hal yang ditautkanhttp://foo/bar/index.html
. Tidak seperti sistem file, server web tidak berkewajiban untuk membuat tata letak konten mereka transparan, mereka juga tidak perlu melakukannya dengan cara yang jelas secara intuitif.sumber
Solusi '-A pola' di atas mungkin tidak berfungsi dengan beberapa halaman web. Ini adalah pekerjaan saya, dengan double wget:
wget
halamangrep
untuk polawget
fileContoh: misalkan ini halaman podcast berita, dan saya ingin 5 file mp3 dari atas halaman:
Mereka
grep
mencari tautan tanpa spasi yang dikutip ganda yang berisi://
dan nama file sayapattern
.sumber
bash
halaman manual. ACAK Setiap kali parameter ini direferensikan, bilangan bulat acak antara 0 dan 32767 dihasilkan.