আমি দৌড়ানোর চেষ্টা করেছি
locate *.orig | xargs rm
কিন্তু এটা বলেছে No such file or directory
আমি এটি করার উপায়গুলি দেখেছি findকিন্তু এটি সনাক্ত করার জন্য অবজেক্টটির পুরো পথটি ফিরে আসে যাতে এটি সম্ভব হয়
আমি দৌড়ানোর চেষ্টা করেছি
locate *.orig | xargs rm
কিন্তু এটা বলেছে No such file or directory
আমি এটি করার উপায়গুলি দেখেছি findকিন্তু এটি সনাক্ত করার জন্য অবজেক্টটির পুরো পথটি ফিরে আসে যাতে এটি সম্ভব হয়
উত্তর:
যদি ফাইলের নামগুলিতে স্পেস থাকে তবে আপনার ব্যবহার করা উচিত
locate -0 $something | xargs -0 rm
locateম্যান পৃষ্ঠা থেকে :
-0,--nullপৃথক লাইনে প্রতিটি এন্ট্রি লেখার পরিবর্তে ASCII NUL অক্ষর ব্যবহার করে আউটপুট এন্ট্রি পৃথক করুন। এই বিকল্পটি GNU xargs (1) --null বিকল্পের সাথে আন্তঃব্যবহারের জন্য ডিজাইন করা হয়েছে।
অথবা
locate $something | while read f; do rm "$f"; done
এছাড়াও, *.origশেলের প্রসার এড়াতে আপনার উদ্ধৃতি দিয়ে সুরক্ষা দেওয়া উচিত এবং এটি কোনও অচিৎ সনাক্ত করতে পাস করা উচিত।
| while readযেহেতু আমার হোম ডিরেক্টরিটি ফাঁকা জায়গায় ফাইলগুলি পূর্ণ।
*.origতবে শেলটি প্যাটার্নটি প্রসারিত করে বলে, file1.orig file2.orig ...এটি locateতার *.origমতো সঠিক স্ট্রিংটি দেখতে পাবে না ।
tr '\n' '\0'।
কমান্ডটি locate *.orig | xargs rmআসলে কাজ করে তবে যা হচ্ছিল তা হ'ল ট্র্যাশে থাকা ফাইলগুলিতে locateসন্ধান *.origকরা ছিল এবং ট্র্যাশের rmক্যানের No such file or directoryমধ্যে ফাইলগুলি মুছার চেষ্টা করার সময় ত্রুটিটি ছুঁড়ে ফেলা হয়েছিল।
সনাক্ত করা গ্লোব্বিং করে না, তবে শেলটি করে। শেলটি প্রসারণ করে * .orig যা বর্তমান ডিরেক্টরিতে এটি খুঁজে পায় যা * .orig এর সাথে মেলে।
শুধু ব্যবহার
locate .orig
এবং যদি এটি আপনার প্রয়োজন মতো হয়ে যায়
locate .orig | xargs rm
অথবা, এনজোটিব যেমন উল্লেখ করেছেন
locate -0 .orig | xargs -0 rm
যদি আপনার ফাইলনেমে সাদা অংশ থাকে।
একটি কৌশল: সমস্ত পাথ tmp ফাইলে সংরক্ষণ করুন। তারপরে, এটি লুপ করুন:
#!/bin/bash
locate .orig /tmp/tmp.txt
while read line
do
pth=$line
rm "$pth"
done < /tmp/tmp.txt
rm -rf /tmp/tmp.txt