মানব-পঠনযোগ্য ফাইলের নামগুলি ফিল্টার করার জন্য, আপনি [:print:]
( মুদ্রণযোগ্য ) অক্ষর শ্রেণীর নামটি ব্যবহার করতে পারেন । ম্যানুয়ালটিতে আপনি এই জাতীয় ক্লাস সম্পর্কে আরও জানতে পারবেন grep
।
find . -type f -size 1033c -name "[[:print:]]*" ! -executable
দ্বিতীয় চিন্তায়, "মানব-পঠনযোগ্য" প্রয়োজনীয়তার পরিবর্তে ফাইলটির নামের পরিবর্তে ফাইলের বিষয়বস্তু উল্লেখ করা যেতে পারে। অন্য কথায়, আপনি পাঠ্য ফাইলগুলি অনুসন্ধান করবেন । ওটা একটু বেশিই মুশকিল। @ ডি_বাই যেমন একটি মন্তব্যে পরামর্শ দিয়েছেন, তারপরে file
আপনার ফাইলের বিষয়বস্তুর ধরণ নির্ধারণ করতে কমান্ডটি ব্যবহার করা উচিত । তবে file
পাইপের পরে চালানো ভাল ধারণা হবে না কারণ এটি ফাইলটির নাম প্রদর্শনের কাজটিকে জটিল করে তুলবে। আমি যা পরামর্শ দিচ্ছি তা এখানে:
find . -type f -size 1033c ! -executable -exec sh -c 'file -b $0 | grep -q text' {} \; -print
file
পার্টটি কীভাবে কাজ করে তা সংক্ষেপে এটি :
-exec
সম্পৃক্ত, executes sh -c 'file -b $0 | grep -q text' FILENAME
প্রত্যেকের জন্য FILENAME
মাফিক সব আগের শর্ত (ধরন, আকার, অ এক্সিকিউটেবল)।
- এই ফাইলগুলির প্রত্যেকের জন্য, একটি শেল (
sh
) এই ছোট স্ক্রিপ্টটি চালায় : ফাইলের নামের সাথে file -b $0 | grep -q text
প্রতিস্থাপন $0
করে।
file
প্রোগ্রাম প্রতিটি ফাইলের বিষয়বস্তুর প্রকার নির্ধারণ করে এই তথ্য আউটপুট। -b
বিকল্প প্রতিরোধ প্রতিটি পরীক্ষিত ফাইলের নাম মুদ্রণ।
grep
file
প্রোগ্রাম থেকে আসা আউটপুট ফিল্টার করে "পাঠ্য" সম্বলিত লাইন অনুসন্ধান করে । (আপনার নিজের জন্য দেখুন, file
কমান্ডের একটি সাধারণ আউটপুট কেমন লাগে))
- তবে
grep
ফিল্টারকৃত পাঠ্য আউটপুট দেয় না, কারণ এতে -q
(শান্ত) বিকল্পটি দেওয়া আছে। এটি যা করে, কেবলমাত্র তার প্রস্থান স্থিতিটি পরিবর্তন করতে হয় 0
(যা "সত্য" প্রতিনিধিত্ব করে - ফিল্টারযুক্ত পাঠ্যটি পাওয়া গেছে) বা 1 (যার অর্থ "ত্রুটি" - "পাঠ্য" পাঠ্যটি আউটপুটে প্রদর্শিত হয়নি file
)।
- আসল / মিথ্যা প্রস্থান স্থিতিটি
grep
আরও পাশ করা sh
হয় find
এবং পুরো -exec sh -c 'file $0 | grep -q text' {} \;
পরীক্ষার চূড়ান্ত ফলাফল হিসাবে কাজ করে ।
- যদি উপরে পরীক্ষা ফিরে সত্য ,
-print
কমান্ড এক্সিকিউট করা হয় (যেমন পরীক্ষিত ফাইলের নাম ছাপা হয়)।