Links

অনুশীলন

আমরা এযাবৎ find কমান্ডের যেসব ব্যবহার দেখলাম, আসুন একবার ঝালিয়ে নেওয়া যাক।
প্রথমেই আমরা হোম ডিরেক্টরিতে playground নামে একটি ফোল্ডার করবো। যারমধ্যে dir-001 থেকে শুরু করে dir-100 পর্যন্ত মোট ১০০ টি ফোল্ডার থাকবে এবং প্রতিটি ফোল্ডারে file-A থেকে file-Z পর্যন্ত ৩৬ করে ফাইল থাকবে:
[email protected]:~$ mkdir -p playground/dir-{001..100}
[email protected]:~$ touch playground/dir-{001..100}/file-{A..Z}
এখন আমরা সেইসব ফাইল বের করবো খুৃঁজে যেগুলোর নাম 'file-A':
[email protected]:~$: find playground -type f -name 'file-A'
আমরা একটি দীর্ঘ লিস্ট দেখতে পাবো। মোট ফাইলের সংখ্যা জেনে নেবো এভাবে:
[email protected]:~$ find playground -type f -name 'file-A' | wc -l
100
এবার আমরা মোডিফিকেশনের সময় অনুযায়ী ফাইল খুঁজবো। এর জন্য আমাদের একটি ফাইল লাগবে যার সাথে আমরা তুলনা করতে পারি। সেটি তৈরী করবো এভাবে:
[email protected]:~$ touch playground/timestamp
[email protected]:~$ stat playground/timestamp
File: ‘playground/timestamp’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 8306121 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/nishadsingha) Gid: ( 1000/nishadsingha)
Access: 2015-04-03 15:39:54.671495249 +0600
Modify: 2015-04-03 15:39:54.671495249 +0600
Change: 2015-04-03 15:39:54.671495249 +0600
Birth: -
আমরা touch playground/timestamp কমান্ড দিয়ে আমাদের রেফারেন্স ফাইলটি তৈরী করেছি। এবং stat playground/timestamp কমান্ড দিয়ে তার সম্পর্কে তথ্যগুলো দেখলাম। আমরা মোডিফিকেশনের সময় দেখতে পাচ্ছি। এবার আমরা কিছু ফাইলকে touch কমান্ডের মাধ্যমে নতুন মোডিফিকেশনের সময় দোবো:
[email protected]:~$ find playground -type f -name 'file-B' -exec touch '{}' ';'
আমরা file-B নামের সকল ফাইলকে আপডেট করেছি। এবার সেইসব ফাইল খুঁজবো যেগুলো timestamp ফাইলটির থেকে মোডিফিকেশনের সময় অনুযায়ী নতুন:
[email protected]:~$ find playground -type f -newer playground/timestamp
স্বাভাবিকভাবেই file-B নামের সকল ফাইলই এই লিস্টে থাকবে।
এবার আমরা জটিল একটা কাজ করে শেষ করবো। আমরা দেখবো কোন ফাইলগুলোর পারমিশন 0600 না এবং কোন ডিরেক্টরিগুলোর 0700 না এবং তাদের ওই পারমিশন দেবো:
[email protected]:~$ find playground \( -type f -not -perm 0600 -exec chmod 0600 '{}' ';' \) -or \( -type d -not -perm 0700 -exec chmod 0700 '{}' ';' \)