আমি কীভাবে লিনাক্সের অধীনে আমার সমস্ত সাব ডিরেক্টরিতে সমস্ত .swp ফাইলগুলি সরিয়ে ফেলতে পারি?
আমি কীভাবে লিনাক্সের অধীনে আমার সমস্ত সাব ডিরেক্টরিতে সমস্ত .swp ফাইলগুলি সরিয়ে ফেলতে পারি?
উত্তর:
বর্তমান ডিরেক্টরি নীচে সমস্ত * .swp ফাইল সরান, findনিম্নলিখিত ফর্মগুলির একটিতে কমান্ডটি ব্যবহার করুন :
find . -name \*.swp -type f -delete
-deleteবিকল্প সরাসরি ম্যাচিং ফাইল মুছে ফেলবে এটি মানে। এটি ওপির আসল প্রশ্নের সেরা মিল।
এর -type fঅর্থ অনুসন্ধান কেবল ফাইলগুলি প্রক্রিয়া করবে process
find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
বিকল্পটি -execপ্রতি ফাইলটিতে একটি স্বেচ্ছাসেবক কমান্ড কার্যকর করতে সহায়তা করে। প্রথম রূপটি প্রতি ফাইল প্রতি কমান্ড চালাবে এবং দ্বিতীয়টি যতটা সম্ভব {}প্যারামিতি
প্রতিস্থাপন করে যতটা সম্ভব কমান্ড চালাবে run
find . -name \*.swp -type f -print0 | xargs -0 rm -f
আউটপুট টি পাইপিং xargsকরা সম্ভব প্রতি ফাইল-ফাইল কমান্ডগুলির চেয়ে জটিল আকারে ব্যবহৃত হয় -exec। বিকল্পটি একটি নতুন লাইনের পরিবর্তে ASCII NULL এর সাথে ম্যাচগুলি আলাদা করতে -print0বলে findএবং NULL- বিভক্ত ইনপুটটি আশা করতে -0বলে xargs। এটি পাইপটি হোয়াইটস্পেসযুক্ত ফাইলের জন্য নিরাপদ করে তোলে।
দেখুন man findআরো বিস্তারিত জানার এবং উদাহরণ জন্য।
আমার হোম ডিরেক্টরিতে অনুসন্ধানের জন্য (এবং জিএনইউ 'ফাইন্ড' এবং 'xargs' ব্যবহার করে), আমি ব্যবহার করব:
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
' -print0' এবং ' -0' এর ব্যবহারের অর্থ হ'ল নামগুলি ASCII NUL '\ 0' অক্ষর দ্বারা সীমিত করা হবে এবং এটি ফাঁকা ইত্যাদি সহ ফাইলের পাথগুলি পরিচালনা করবে। আপনি যদি ভাবেন যে আপনার ডিরেক্টরিতে '.swp' দিয়ে শেষ হওয়া ডিরেক্টরিতে (বা ডিভাইস ফাইল, বা FIFOs, বা অন্যান্য নন-ফাইল) থাকতে পারে, আপনি 'সন্ধানের -type f' বিকল্পটি যুক্ত করতে পারেন । আপনার যদি কেবল ডিরেক্টরি থাকে তবে উপরের কমান্ডটি তাদের উচ্চস্বরে সরিয়ে ফেলতে ব্যর্থ হবে।