find: টেস্ট

find প্রোগ্রামটিতে অপশন হিসেবে আমরা কিছু ফিল্টার যোগ করতে পারি। অর্থাৎ, সার্চ করার সময় ওই বিষয়গুলোর প্রতি নজর দেবে। এবং সেইসব ফাইলই দেখাবে যেগুলো শর্তপূরণ করে। মোটের ওপর সবরকম টেস্টকে আমরা তিনভাগে ভাগ করতে পারি।

  • ফাইলের ধরণ সংক্রান্ত টেস্ট: এই টেস্টগুলো দিয়ে ফাইলের ধরণ নির্দিষ্ট করে দেওয়া যায়।

  • ফাইলের আকার সংক্রান্ত টেস্ট: এগুলো ব্যবহৃত হয় নির্দিষ্ট আকারের ফাইল খুঁজতে।

  • অন্যান্য: উপরের দুই ধরণের ছাড়া বাকি সব টেস্ট এই ধরণের অন্তর্ভূক্ত।

ফাইলের ধরণ সংক্রান্ত টেস্ট

find ~ | wc -l কমান্ড দিয়ে আমরা হোম ডিরেক্টরির সকল ফাইল ও সাবডিরেক্টরির মিলিত সংখ্যা পেয়েছিলাম। এখন আমরা যদি চাই শুধু ডিরেক্টরির সংখ্যা পেতে তাহলে কী করতে হবে? আমাদের find প্রোগ্রামকে বলতে হবে যে শুধু ডিরেক্টরিগুলোই যেন সে আমলে আনে। আমরা সেটি করতে পারি এভাবে:

me@howtocode-pc: find ~ -type d | wc -l
13840

তাহলে, আমরা দেখতে পাচ্ছি, কোনো নির্দিষ্ট ধরণের ফাইল খুঁজতে হলে আমাকে -type অপশনটি যোগ করতে হবে এবং তার সাথে দিতে হবে ফাইলের ধরণ নির্দেশক বিশেষ চিহ্ণ। যেমন এক্ষেত্রে d দিয়ে directory বোঝানো হয়েছে। আমরা নিচের টেবিল থেকে যেকোনো চিহ্ন ধরণ বোঝাতে ব্যবহার করতে পারি:

চিহ্ন

ফাইলের ধরণ

b

ব্লক স্পেশাল ডিভাইস ফাইল

c

ক্যারেক্টার স্পেশাল ডিভাইস ফাইল

d

ডিরেক্টরি

f

সাধারণ ফাইল

l

সিম্বোলিক লিঙ্ক

ফাইলের আকার সংক্রান্ত টেস্ট

এবার মনে করুন আমরা সেইসব ফাইল সংখ্যা জানতে চাই যেগুলোর আকার ৫০০ মেগাবাইটের চেয়ে বড়। তাহলে আমরা সেটা করতে পারি এই কমান্ড দিয়ে:

me@howtocode-pc: find ~ -type f -size +500M | wc -l
11

তারমানে আকার অনুযায়ী ফিল্টার করতে আমাদের -size অপশন ব্যবহার করতে হবে। তারপর '+' বা '-' দিয়ে বড় বা ছোট বোঝাতে হবে। তারপর সংখ্যা ও একক নির্দেশক চিহ্ণ। যেমন এখানে মেগাবাইটের জন্য M ছিল।

এবার আমরা চিহ্নগুলো দেখে নিই:

চিহ্ন

একক

b

৫১২ বাইটের ব্লক। কোনো এককনির্দেশক চিহ্ণ না থাকলে এটি ডিফল্ট হিসেবে ব্যবহৃত হয়।

c

বাইট

w

২ বাইটের শব্দ

k

কিলোবাইট

M

মেগাবাইট

G

গিগাবাইট

অন্যান্য টেস্ট

মনে করি হোম ফোল্ডারে আমরা কিছু ISO ইমেজ খুঁজবো যেগুলো ৫০০এমবির চেয়ে বড়। যেহেতু ইমেজগুলো ফাইল এবং এর এক্সটেনসন হবে iso আমরা লিখতে পারি:

me@howtocode-pc: find ~ -type f -name "*.iso" -size +500M
/home/me/porteus-refinished.iso
/home/me/lubuntu-14.04.1-desktop-i386.iso
/home/me/porteus-pocketboy-25-12-14.iso
/home/me/archlinux-2015.01-1-archboot.iso
/home/me/debian-7.7.0-amd64-CD-1.iso
/home/me/lubuntu-14.10-desktop-i386.iso

এখানে আমরা -name অপশন যোগ করেছি। আর ওয়াইল্ডকার্ড ব্যবহার করে সেইসব ফাইল খুঁজতে বলেছি যেগুলোর শেষ হয় .iso দিয়ে।

find কমান্ডের অনেক অনেক অপশন আছে। তারমধ্যে গুরুত্বপূর্ণ কিছু এখানে দিচ্ছি:

টেস্ট

কাজ

-cmin n

n মিনিট আগে বা পরে স্ট্যাটাস মোডিফাইড হয়েছে।

-cnewer file

file এর পরে স্ট্যাটাস বা ডাটা মোডিফাইড হয়েছে এমনসব ফাইল বা ডিরেক্টরি খুঁজবে।

-ctime n

n দিন আগে স্ট্যাটাস মোডিফাইড হয়েছে।

-empty

ফাঁকা ফাইল বা ডিরেক্টরি।

-group name

name নামক গ্রুপের অন্তর্গত।

-iname pattern

নির্দিষ্ট প্যাটার্নের ফাইল বা ডিরেক্টরি খুঁজবে তবে কেস ইনসেনসিটিভ।

-inum n

n ইনোড নম্বরওয়ালা সব ফাইল খুঁজে বের করবে।

-mmin n

n মিনিট আগে বা পরে ডাটা মোডিফাইড হয়েছে।

-mtime n

n দিন আগে ডাটা মোডিফাইড হয়েছে।

-name pattern

নির্দিষ্ট প্যাটার্নের ফাইল বা ডিরেক্টরি খুঁজবে তবে কেস সেনসিটিভ।

-newer file

file এর পরে ডাটা মোডিফাইড হয়েছে এমনসব ফাইল বা ডিরেক্টরি খুঁজবে।

-nouser

এমনসব ফাইল বা ডিরেক্টরি যা কোনো ইউজারের না।

-nogroup

এমনসব ফাইল বা ডিরেক্টরি যা কোনো গ্রুপের না।

-perm mode

পারমিশন মোড অনুযায়ী খুঁজবে।

-samefile name

n ইনোড নম্বরওয়ালা সব ফাইল খুঁজে বের করবে।

-user name

name নামক ইউজারনেমের ফাইল ও ডিরেক্টরি খুঁজবে।

Last updated