डाउनलोड फ़ाइल wget द्वारा वास्तविक नाम के साथ


9

मैं एक वेब साइट से HTTP के माध्यम से एक फ़ाइल डाउनलोड करने का प्रयास कर रहा हूं wget।

जब मैं उपयोग करता हूं:

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

मुझे केवल एक फाइल मिलती है index.html?acc=GSE48191।

जब मैं उपयोग करता हूं:

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

मुझे मिलता है asd.rpm, लेकिन मैं वास्तविक नाम के साथ डाउनलोड करना चाहता हूं, और डाउनलोड की गई फ़ाइल का नाम मैन्युअल रूप से बदलना नहीं चाहता।


आप अगली बार जैव सूचना विज्ञान पर इस तरह का प्रश्न पूछना चाहते हैं । यह यहाँ भी विषय पर है, और रहने के लिए आपका स्वागत है, लेकिन आपको उन लोगों से अधिक मदद मिल सकती है जो क्षेत्र में काम करते हैं।
— terdon

3
@terdon कैसे पर विषय पर wget और * nix खोल व्यवहार के बारे में पूछ रहा है जैव सूचना विज्ञान ?
— एक सीवीएन

1
@ माइकलकॉर्लिंग एनसीबीआई से जानकारी निकालने वाला होगा, इसीलिए मैंने इसका सुझाव दिया। एक उत्तर की संभावना होगी कि ओपी को एक शेल समाधान के बजाय जो जानकारी मिल रही है, उसे प्राप्त करने के लिए एक सरल, अधिक प्रत्यक्ष दृष्टिकोण शामिल होगा। उदाहरण के लिए "आप यहां से यह जानकारी अधिक आसानी से प्राप्त कर सकते हैं" जैसा कुछ।
— terdon

इसके --trust-server-namesतर्क को देखें wget-
— ivanivan

3
यह ध्यान रखना महत्वपूर्ण है कि URL द्वारा संदर्भित संसाधन का "वास्तविक नाम" जैसी कोई चीज नहीं है। एक वेब सर्वर कुछ सामग्री के साथ एक अनुरोध का जवाब देता है, और संभवत: कुछ हेडर जो किसी तरह से उस सामग्री का वर्णन करते हैं, लेकिन इसमें एक फ़ाइल शामिल नहीं है।
— IMSoP

जवाबों:


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

आपके द्वारा डाउनलोड की जा रही फ़ाइल एक tarसंग्रह (एक बाइनरी फ़ाइल) है, जो एक वेब सर्वर से गतिशील लिंक द्वारा प्रदान की जाती है। wgetसामान्य रूप से आपके द्वारा उपयोग किए जा रहे URL के हिस्से का उपयोग करके फ़ाइल को सहेजा जा सकता है, लेकिन इस मामले में यह केवल एक REST API समापन बिंदु (या कुछ इसी तरह) है, इसलिए नाम के साथ काम करने के लिए अमित्र होगा (यह अभी भी एक मान्य नाम होगा और फ़ाइल सामग्री समान होगी)।

हालांकि, इस मामले में सर्वर एक "सामग्री विवाद" शीर्षक प्रदान करता है जिसमें वास्तविक फ़ाइल नाम होता है, जो विकल्प wgetका उपयोग करने पर उपयोग करने में सक्षम --content-dispositionहोता है। इस विकल्प को मेरे मैनुअल में "प्रयोगात्मक" के रूप में चिह्नित किया गया है wget।

आपको URL को भी उद्धृत करने की आवश्यकता है ताकि शेल इसमें &और ?वर्णों की व्याख्या न करे ।


समतुल्य वस्तु का उपयोग curl:

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

या, बराबर लंबे विकल्पों का उपयोग करते हुए:

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

एक बार जब आप फ़ाइल डाउनलोड कर लेते हैं, तो आपको इसे अनपैक करना होगा:

tar -xvf GSE48191_RAW.tar

इस विशेष संग्रह को बनाने के तरीके के कारण, यह संग्रह की फ़ाइलों को वर्तमान निर्देशिका में अनपैक कर देगा (इसलिए एक नई निर्देशिका बनाना, संग्रह को वहां ले जाना और वहां एक अच्छा विचार हो सकता है)। यह संग्रहण में फ़ाइलों हैं gzip-compressed CELफ़ाइलें।


8

शेल वर्णों की सामान्य व्याख्या करता है, विशेष ?रूप से वाइल्डकार्ड के रूप में (जो यहां कोई फर्क नहीं पड़ता) और &जैसा कि "पृष्ठभूमि में रखा गया है"। आपको उत्तरार्द्ध पर ध्यान देना चाहिए, क्योंकि शेल प्रतिक्रिया एक प्रत्यक्ष कमांड से अलग होती है।

तो आपको उद्धृत करने की आवश्यकता है:

wget 'http://abc/geo/download/?acc=GSE48191&format=file'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.