খুব দক্ষ নয়, তবে আপনি এটি করতে পারেন:
find /folder/downloading -type f -exec sh -c '
for file do
lsof -F a "$file" | grep -q w || mv "$file" /folder/downloaded
done' sh {} +
যে চেক যে ফাইলটি একটি সাথে তালিকাভুক্ত নয় wআচার aমধ্যে ccess মোড lআমি sএর টন oকলম fসামনে Iles mণ ving।
লিনাক্স-ভিত্তিক অপারেটিং সিস্টেমে সাধারণত হিসাবে দেখা যায় এর psmiscবাস্তবায়নের fuserএকটি -wকার্য রয়েছে (লেখার জন্য খোলা ফাইলগুলি পরীক্ষা করার জন্য) তবে দুর্ভাগ্যক্রমে এটি কেবলমাত্র -kসম্পর্কিত প্রক্রিয়াগুলিকে হত্যা করার জন্যই কাজ করে। তবে, মনে হচ্ছে আপনি সিউডো সিগন্যাল 0 ব্যবহার করে এটি ব্যবহার করতে পারবেন যা কিছুই করে না:
find /folder/downloading -type f -exec sh -c '
for file do
fuser -s -w -k -0 "$file" || mv "$file" /folder/downloaded
done' sh {} +
সরান -s(অথবা এমনকি সঙ্গে এটি প্রতিস্থাপন -v) আপনি তা দেখতে প্রক্রিয়া (গুলি) চান করা হয় (হয়) পদক্ষেপ প্রতিরোধ।
মনে রাখবেন যে আপনি যদি কমান্ডগুলিকে অতি-ব্যবহারকারী হিসাবে চালাচ্ছেন না, আপনি কেবল আপনার প্রক্রিয়াগুলি সম্পর্কে তথ্য পাবেন। ফাইলগুলি ডাউনলোড করার প্রক্রিয়াগুলি যদি অন্য কোনও ব্যবহারকারী হিসাবে চলমান থাকে তবে সেগুলি সনাক্ত করা যায় না।
এছাড়াও মনে রাখবেন যে আপনি ফাইলগুলিকে অন্য একটি ফাইল সিস্টেমে সরিয়ে না নিলে ফাইলগুলি সরিয়ে নেওয়া বর্তমানে ফাইলটিতে লেখার কাজ শেষ না হওয়া থেকে প্রক্রিয়াটিতে যে কোনও প্রক্রিয়া লিখছে তা প্রতিরোধ করবে না।
তবে, পরে তারা কী কী নকশাকৃত হয়েছে তার উপর নির্ভর করে তারা বিভ্রান্ত হতে পারে যদি তারা লেখার কাজ শেষ করে দেয় তবে ফাইলটি আর নেই (উদাহরণস্বরূপ যদি তারা ফাইলটি ডাউনলোড করার পরে কিছু বৈশিষ্ট্য পরিবর্তন করতে চায় এবং না করে) ফাইল বর্ণনাকারীর মাধ্যমে (যেমন chmod()বনাম fchmod(), বা utimes()যা কোনও ফাইল বর্ণনাকারীর মাধ্যমে করা যায় না)।
%.partতারপরে পুনরায় নামকরণ% এ ডাউনলোড করুন )। তারপরে যদি ডাউনলোডারটি ভাল আচরণ করে (অন্য কিছু করার মতো না) তবে আপনারmvফাইলগুলির নাম পরিবর্তন করতে সক্ষম হওয়া উচিত ।