قم بتصلب مع ملف الإدخال والإخراج المستند

StackOverflow https://stackoverflow.com/questions/2046287

  •  20-09-2019
  •  | 
  •  

سؤال

لدي قائمة عناوين URL التي أرغب في إطعامها في WGET باستخدام ملف -Input.

ومع ذلك، لا يمكنني تحديد كيفية التحكم في قيمة Putput-Document في نفس الوقت، وهو بسيط إذا قمت بإصدار الأوامر واحدا تلو الآخر. أرغب في إنقاذ كل مستند كمثلاثا لعنوان URL الخاص به.

 cat url-list.txt | xargs -P 4 wget

و Xargs موجودة لأنني أريد أيضا الاستفادة من ميزات Max-Procs للتنزيلات الموازية.

هل كانت مفيدة؟

المحلول

ماذا عن استخدام حلقة؟

while read -r line
do
   md5=$(echo "$line"|md5sum)
   wget ... $line ... --output-document $md5 ......
done < url-list.txt

نصائح أخرى

لا تستخدم cat. وبعد بإمكانك أن تأخذ xargs قراءة من ملف. من man صفحة:

 - اضغط على الملف = ملف - ملف قراءة العناصر من الملف بدلا من الإدخال القياسي. إذا كنت تستخدم هذا الخيار، يظل Stdin دون تغيير عند تشغيل الأوامر. غير حكيم، سار الدين يتم إعادة توجيه من / dev / null.

في سؤالك الذي تستخدمه -p 4 الذي يوحي أنك تريد أن يعمل الحل الخاص بك بالتوازي. جنو مواز http://www.gnu.org/software/parallel/ ممكن أن تساعدك:

cat url-list.txt | parallel 'wget {} --output-document "`echo {}|md5sum`"'

يمكنك أن تفعل ذلك مثل هذا:

القط url- list.txt | أثناء قراءة URL؛ قم بتدوير URL -o $ $ (ECHO "$ URL" | MD5)؛ انتهى

حظا سعيدا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top