উইজেটের আউটপুট লিখুন বা url এর উপর ভিত্তি করে একটি কাস্টম ফাইলনামে কার্ল করুন


12

উদাহরণস্বরূপ আমার একটি লিঙ্ক আছে http://www.abc.com/123/def/ghi/jkl.mno। আমি এটি ব্যবহার করে ডাউনলোড করতে চাই wgetবা curlআউটপুট ফাইলটির নাম পেতে চাই def_ghi_jkl.mno, যেখানে অংশটি def_ghiলিঙ্কটি থেকে নেওয়া হয়েছে।

আমি এই wgetকমান্ডটি একাধিক ফাইল ডাউনলোড করার জন্য একটি স্ক্রিপ্টে রেখে দেব যাতে এটি আউটপুট ফাইলের নামটি স্পষ্টভাবে দিতে পারে না।

উত্তর:


15

curlহয়েছে -o, --output বিকল্প যা একটি একক যুক্তি ফাইলের নাম আউটপুট ইঙ্গিত পরিবর্তে লেখা হবে লাগে stdout। আপনি যদি ইউআরএলটিতে উপাদানগুলি ঘিরে রাখছেন {}বা []ঘিরে রাখছেন (সাধারণত একাধিক নথি আনতে ব্যবহৃত হয়) তবে আপনি #ফাইলের নাম নির্দিষ্টকরণকারীর একটি সংখ্যা অনুসরণ করতে পারেন । এই জাতীয় প্রতিটি পরিবর্তনশীল ইউআরএল আনার জন্য সংশ্লিষ্ট স্ট্রিংয়ের সাথে প্রতিস্থাপন করা হবে। একাধিক ফাইল আনার জন্য, এর মধ্যে টোকেনের একটি কমা-বিচ্ছিন্ন তালিকা যুক্ত করুন {}। যদি ইউআরএল আনার অংশগুলির ক্রমসংখ্যা থাকে তবে আপনি এর সাথে একটি সীমা নির্দিষ্ট করতে পারেন []

উদাহরণ:

  curl http://www.abc.com/123/{def}/{ghi}/{jkl}.mno -o '#1_#2_#3.mno'

বিকল্পের আর্গুমেন্টের চারপাশে উদ্ধৃতিগুলি নোট করুন (যদি কোনও প্রসারিত ভেরিয়েবলের সাথে ফাইলের নাম শুরু না হয় তবে প্রয়োজন হয় না) এটির ফলাফল আউটপুট ফাইলের মধ্যে হওয়া উচিত def_ghi_jkl.mno

  curl http://www.abc.com/123/{def}/{ghi}/{jkl,pqr,stu}.mno -o '#1_#2_#3.mno'

এই আউটপুট ফাইলের মধ্যে স্থাপিত হবে def_ghi_jkl.mno, def_ghi_pqr.mnoএবং def_ghi_stu.mno

 curl http://www.abc.com/123/{def}/{ghi}/[1-3].mno -o '#1_#2_#3.mno'

এই আউটপুট ফাইলের মধ্যে স্থাপিত হবে def_ghi_1.mno, def_ghi_2.mno, def_ghi_3.mno


2

wgetএকটি স্যুইচ -O(দীর্ঘ ফর্ম --output-document) রয়েছে যা আপনাকে সংরক্ষণ করতে ফাইলের নাম নির্দিষ্ট করতে দেয়। (সম্ভবতঃ কার্লের কিছু মিল রয়েছে has) সুতরাং আপনি এটি করতে পারেন:

wget -O def_ghi_jkl.mno http://www.abc.com/123/def/ghi/jkl.mno

এবং এটি আপনি যা চান তা করবে।

আপনি যদি এই নামকরণের স্কিমটি স্বয়ংক্রিয় করতে চান তবে আপনি সম্ভবত উইজেটের চারপাশে একটি মোড়ক তৈরি করতে পারেন তবে বুলেট-প্রুফ পাওয়া খুব কঠিন হবে এবং স্পষ্টতই এই উত্তরটির বাইরে নয়। (সুস্পষ্ট ইউআরএল থেকে ডাউনলোড করা একটি একক ফাইলের সরল কেসটি সঠিকভাবে পাওয়া খুব শক্ত হওয়া উচিত নয়, তবে এটি কেবলমাত্র চালনার একমাত্র পদ্ধতি নয় this কেবলমাত্র একটি মামলার নামকরণ করা যা এটি সামান্য তুচ্ছ করে তোলে, আপনি একাধিক URL নির্দিষ্ট করতে পারেন কমান্ড লাইনে।)

নোটটি -Oমোটেও একরকম নয় -o, যা নাম লেখানো ফাইলটিতে লেখার উইজেটের নিজস্ব আউটপুট


এটি একটি স্ক্রিপ্টের অংশ, স্পষ্টত দেওয়া ফাইলের নাম যেমন স্বতন্ত্র কাজ করে না।
gvz

@ user47567 কেন নেই? স্ক্রিপ্ট থেকে উইজেট বা কার্ল আহ্বান করা এটিকে অবাস্তব করে তোলে সে সম্পর্কে কী বলা যায়? (এবং সত্যই, উত্তরগুলি কীভাবে কার্যকর হবে তা নিয়ে যদি আপনার মধ্যে এই ধরনের বাধা থাকে তবে সেই তথ্যটি শুরু থেকেই সত্যই প্রশ্নে প্রবেশ করা উচিত))
সিভিএন

0

এখানে কিছু বাশ সাবস্টিটিউশনের কৌশল

link="http://www.abc.com/123/def/ghi/jkl.mno"
OutputFile=$( echo ${link:23: 23}| tr "/" "_" )
echo $OutputFile
def_ghi_jkl.mno

{$link:23: 23}সরাবে " http://www.abc.com/123/ " এটা ${parameter:offset:length}, তারপর trপ্রতিস্থাপন করবে /করার _

সুতরাং এখন আপনি সহজেই উইজেট বা কার্ল দিয়ে ব্যবহার করতে পারেন

wget $link  -O $OutputFile

এছাড়াও আমরা awk ব্যবহার করতে পারি, এটি ইনপুট স্ট্রিং থেকে দায়ের করা শেষ তিনটি নিষ্কাশন করবে:

OutputFile=$( echo $link | awk -F/ 'BEGIN{OFS="_"}{ print $( NF-2),$(NF - 1 ),$NF}' )

0

আপনার প্রয়োজনীয় ফাইল নামটি wgetনিজেই উত্পন্ন করা যায় না, সুতরাং এটি শেল স্ক্রিপ্ট দ্বারা হ্যান্ডেল করা দরকার:

$ url='http://www.example.com/123/def/ghi/jkl.mno'
$ outFile=$(echo "$url" | cut -d /  -f 5- | tr / _)
$ echo $outFile 
def_ghi_jkl.mno
$ wget "$url" -O "$outFile"

অথবা আপনি যদি এটি এক লাইনের মতো পছন্দ করেন:

wget "$url" -O "$(echo "$url" | cut -d /  -f 5- | tr / _)"

0

আপনি যদি কার্ল পছন্দ করেন তবে সর্বাধিক প্রত্যক্ষ উপায় হ'ল:

curl -L -o <filename> "https://drive.google.com/uc?export=download&id=<file id>"

ফাইলের নাম: ডাউনলোড করা ফাইলের নাম

ফাইল আইডি: গুগল ড্রাইভের ওয়েব ভিউতে এই ফাইলটির আইডি https://drive.google.com/file/d/ ফাইল আইডি / ভিউরেটে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.