সংখ্যার সাথে শেষ হওয়া ফাইলগুলি সন্ধান করুন


10

লগ ফাইলগুলি আরও বড় হয়ে যাওয়ার সাথে সাথে আমি কিছু ব্যাকআপ স্ক্রিপ্ট তৈরি করার চেষ্টা করছি। আমার কাছে যা আছে তা হ'ল বর্তমান ফাইলটি অনুলিপি করছে (উদাহরণস্বরূপ secureফাইল ইন /var/log/) এবং সেই ফাইল থেকে সামগ্রীটি সরিয়ে ফেলুন। কিন্তু মত নাম দিয়ে কিছু ফাইল আছে: secure.1, secure.2এবং এই সব আমি পছন্দ তাদের গণনা করতে, এবং যদি সংখ্যা বড় তারপর 2তাদের সবাইকে আর্কাইভ করতে। আমি এই ফাইলগুলি খুঁজতে বা তাদের গণনা করার পদ্ধতিটি খুঁজে পাচ্ছি না। আমার কাছে প্রথম যে ধারণাটি এসেছিল তা হ'ল:

find /var/log/ -name *.1 | wc -l

1একটি ফাইল থাকায় এটি সর্বদা মুদ্রণ করবে secure.1। আমি কীভাবে লুপের জন্য গণনা করতে পারি যেখানে আমি সংখ্যার মতো {1..5}বা একই জাতীয় সীমা নির্দিষ্ট করতে পারি । এই ফাইলগুলিকে আলাদা করার এবং এগুলিকে এক হিসাবে তৈরি করার এবং তাদের ব্যাকআপ বা মুছতে বা যা যা মুছে ফেলার কোনও উপায় আছে ... বা সর্বোপরি আমি কীভাবে এই সংখ্যার সাথে শেষ হয় তা এই সংখ্যার সন্ধান করতে পারি।


1
আপনি কি ওয়াইল্ডকার্ডের উদ্ধৃতিটি ভুলে গেছেন? find /var/log/ -name '*.1' ...
মুড়ু

1
আমি মনে করি logrotateআপনার উদ্দেশ্যটি পরীক্ষা করা উচিত ।
কস্টাস

উত্তর:


15

সহজ সহ -name:

find /var/log -name '*.[2-9]'

বা যে কোনও সংখ্যার জন্য:

find /var/log -name '*.[[:digit:]]'

বা অন্যান্য অক্ষর যদি অঙ্কের পরেও সম্ভব হয়:

find /var/log -name '*.[2-9]*'

কেবল তাদের নামে অঙ্ক রয়েছে এমনগুলি কীভাবে খুঁজে পাবেন?
letthefireflieslive

3

.[1 থেকে 5] পর্যন্ত একটি সংখ্যার সাথে শেষ হওয়া ফাইলের নামগুলি সন্ধান করতে।

find /var/log/ -type f -regextype sed -regex ".*\.[1-5]$"

1

কেন শুধু ...

for log in /var/log/*.[1-5]
do whatever to "$log"
done

আপনি প্রয়োজন হবে না findযতটা আমি বলতে পারেন - শেল একই globs এতে করে ব্যবহার -name। এবং যদি সমস্ত ফাইল একক ডিরেক্টরিতে থাকে ... অবশ্যই, যদি এমন উপ-ডিরেক্টরি থাকে তবে আপনি সেই বিষয়ে আগ্রহী তখনও findউপকারী হতে পারে - শেলের মধ্যে গাছগুলি হাঁটা মাথা ব্যথা হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.