উত্তর:
পদ্ধতির একটি দম্পতি:
umask 222
(অথবা umask 277
, যদি আপনার উমস্ক বর্তমানে 77 হয়; যেমন, আপনার umask 200 যোগ করুন)।
এটি আপনার সুরক্ষিত করা সমস্ত ফাইলকে কারণ করবে r--
(যাই হোক) পরিবর্তে rw-
(যাই হোক) , তাই, একবার আপনি একটি ফাইল তৈরি করলে, আপনি এটির উপরে ওভাররাইট করতে পারবেন না chmod
এটি প্রথমে প্রবেশ করান (যদি না আপনি রুট হিসাবে চলমান হয়)। এটি আপনার শিরোনামে আপনি যে প্রশ্নটি উত্থাপিত করেছেন তার উত্তর দেয়, তবে এটি আসলে আপনার সমস্যার সমাধান করে না; এটি শুধু আপনি সফলভাবে ডাউনলোড এবং বজায় রাখা হবে a/1.pdf
এবং মিস করবেন b/1.pdf
বরং কাছাকাছি অন্য উপায়।
(যদি এটি কোনও সান্ত্বনা দেয়, তবে সংঘর্ষে আপনাকে সতর্ক করে দেওয়া ত্রুটি বার্তাগুলি পাবেন।) gwurls.txt
ফাইল, naïvely উভয় তালিকা যা a/1.pdf
এবং b/1.pdf
, তাই সেখানে এটি ঠিক করার চেষ্টা করুন। সঙ্গে এটি মঙ্গল sed
অথবা কিছু দেখতে চাই a/1.pdf a_1.pdf b/1.pdf b_1.pdf
... এবং তারপর চালানো একটি স্ক্রিপ্ট লিখুন curl
একটি ইউআরএল সঙ্গে $1
এবং একটি আউটপুট স্পেসিফিকেশন $2
, এবং চালানো
xargs -n 2
your_script< modified_gwurls.txt
সুতরাং xargs
চলবে
your_script
a/1.pdf a_1.pdf
your_script
b/1.pdf b_1.pdf
এই ফাইলগুলির মধ্যে কোনও হোয়াইটস্পেস থাকে তবে এটি নোংরা হয়ে যায় - কিন্তু আমি মনে করি URL গুলির জন্য এটি সম্ভব নয়, তাই না?
দ্বারা সহজতম সমাধান হবে Wget ইনস্টল করা এবং নিম্নলিখিত কমান্ড কার্যকর:
wget --input-file=gwurls.txt
একই নামের একটি ফাইল ইতিমধ্যে বিদ্যমান থাকলে Wget স্বয়ংক্রিয়ভাবে আউটপুট ফাইল নামকরণ করে।
আপনি যদি স্কিম এবং হোস্ট স্ট্রিপ করেন (উদাঃ, http://example.com/
) ইউআরএল থেকে, আপনি আন্ডারস্কোর (অথবা অন্য কোন অক্ষর) সহ সমস্ত স্ল্যাশ প্রতিস্থাপন করতে পারেন এবং ফাইলগুলি সেভাবে সংরক্ষণ করতে পারেন। নিরাপদ দিকে থাকার জন্য, আপনি দ্বি underscores সঙ্গে প্রাক ex excoresres প্রতিস্থাপন করতে পারে।
Bash সঙ্গে, এই কাজ করা উচিত:
while read -r URL; do
OUTPUT="${URL#http://example.com/}"
OUTPUT="${OUTPUT//_/__}"
OUTPUT="${OUTPUT//\//_}"
curl --output "$OUTPUT" --url "$URL"
done < gwurls.txt
কিভাবে এটা কাজ করে:
while read -r URL; do ... done < gwurls.txt
বিষয়বস্তু পড়া gwurls.txt লাইন দ্বারা লাইন এবং পরিবর্তনশীল মধ্যে সমগ্র লাইন (নেতৃস্থানীয় বা পিছনের স্পেস ছাড়া) সঞ্চয় URL টি এবং executes ...
।
তিন OUTPUT=...
কমান্ড ব্যবহার করে উল্লিখিত প্রতিস্থাপন সঞ্চালন ব্যাশ স্ট্রিং ম্যানিপুলেশন ।
curl --output "$OUTPUT" --url "URL"
ফাইল ডাউনলোড করুন এবং পছন্দসই ফাইল নাম দিয়ে এটি সঞ্চয়।
একই পদ্ধতি ব্যবহার করে সার্ভারের ডিরেক্টরি গঠন পুনরায় তৈরি করাও সম্ভব।
Bash সঙ্গে, এই কাজ করা উচিত:
while read -r URL; do
OUTPUT="${URL#http://example.com/}"
curl --create-dirs --output "$OUTPUT" --url "$URL"
done < gwurls.txt
এখানে --create-dirs
সুইচ curl ডিরেক্টরি তৈরি করে তোলে a
যদি আউটপুট সার্চ a/1.pdf
।