Dosyayı gerçek isimle wget ile indir


9

Kullanarak bir web sitesinden HTTP üzerinden bir dosya indirmeye çalışıyorum wget.

Kullandığımda:

wget http://abc/geo/download/?acc=GSE48191&format=file

Sadece adlı bir dosya alıyorum index.html?acc=GSE48191.

Kullandığımda:

wget http://abc/geo/download/?acc=GSE48191&format=file -o asd.rpm

Anlıyorum asd.rpm, ancak gerçek adla indirmek istiyorum ve indirilen dosyanın adını manuel olarak değiştirmek istemiyorum.


Bir dahaki sefere Biyoinformatik hakkında bu tür bir soru sormak isteyebilirsiniz . Burada da konuyla ilgili ve kalmak hoş geldiniz, ancak sahada çalışan insanlardan daha fazla yardım alabilirsiniz.
terdon

3
@terdon Biyoinformatik konusunda wget ve * nix shell davranışlarını nasıl soruyorsunuz ?
CVn

1
@ MichaelKjörling NCBI bilgi çıkarmak olurdu, bu yüzden bunu önerdim. Bu sorunun cevabı muhtemelen OP'nin bir kabuk çözümü yerine aradığı bilgiye ulaşmak için daha basit ve daha doğrudan bir yaklaşım içerecektir. Örneğin "bu bilgiyi buradan daha kolay alabilirsiniz" gibi bir şey.
terdon

---trust-server-nameswget
ivanivan

3
Bir URL tarafından referans verilen bir kaynağın "gerçek adı" diye bir şey olmadığını belirtmek önemlidir. Bir web sunucusu, bazı içeriğe ve muhtemelen bu içeriği bir şekilde tanımlayan bazı başlıklara sahip bir isteğe yanıt verir, ancak hiç bir dosyanın dahil edilmesi gerekmez.
IMSoP

Yanıtlar:


30
wget --content-disposition 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

İndirdiğiniz dosya tar, bir web sunucusundan dinamik bir bağlantı tarafından sağlanan bir arşivdir (ikili dosya). wgetnormalde dosyayı kullandığınız URL'nin bir bölümünü kullanarak kaydeder, ancak bu durumda bu yalnızca bir REST API uç noktasıdır (veya benzer bir şeydir), bu nedenle adın çalışması kolay değildir (yine de geçerli bir ad ve dosya içeriği aynı olacaktır).

Ancak, bu durumda sunucu, gerçek dosya adını içeren wgetve --content-dispositionseçeneği kullanırsanız kullanabileceğiniz bir "İçerik Öğesi" üstbilgisi sağlar . Bu seçenek için el kitabımda "deneysel" olarak işaretlendi wget.

Kabuğun içindeki &ve ?karakterlerini yorumlamaması için URL'yi de alıntılamanız gerekir.


Eşdeğer bir şey kullanarak curl:

curl -J -O 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

Veya, eşdeğer uzun seçenekleri kullanarak:

 curl --remote-header-name --remote-name 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

Dosyayı indirdikten sonra, paketini açmanız gerekir:

tar -xvf GSE48191_RAW.tar

Bu özel arşivin oluşturulma şekli nedeniyle, bu, arşivin dosyalarını geçerli dizine açacaktır (bu nedenle yeni bir dizin oluşturmak, arşivi oraya taşımak ve açmak iyi bir fikir olabilir). Bu arşivdeki dosyalar gzipsıkıştırılmış CELdosyalardır.


8

Kabuk, karakterlerin olağan yorumunu yapar, özellikle ?de joker karakter olarak (burada önemli değildir) ve &"arka plana konulur". Sonuncusunu fark etmiş olmalısınız, çünkü kabuk yanıtı doğrudan komuttan farklıdır.

Yani alıntı yapmalısınız:

wget 'http://abc/geo/download/?acc=GSE48191&format=file'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.