قم بتصلب مع ملف الإدخال والإخراج المستند
سؤال
لدي قائمة عناوين 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)؛ انتهى
حظا سعيدا
لا تنتمي إلى StackOverflow