মানব-পঠনযোগ্য ফাইলের নামগুলি ফিল্টার করার জন্য, আপনি [: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বিকল্প প্রতিরোধ প্রতিটি পরীক্ষিত ফাইলের নাম মুদ্রণ।
grepfileপ্রোগ্রাম থেকে আসা আউটপুট ফিল্টার করে "পাঠ্য" সম্বলিত লাইন অনুসন্ধান করে । (আপনার নিজের জন্য দেখুন, fileকমান্ডের একটি সাধারণ আউটপুট কেমন লাগে))
- তবে
grepফিল্টারকৃত পাঠ্য আউটপুট দেয় না, কারণ এতে -q(শান্ত) বিকল্পটি দেওয়া আছে। এটি যা করে, কেবলমাত্র তার প্রস্থান স্থিতিটি পরিবর্তন করতে হয় 0(যা "সত্য" প্রতিনিধিত্ব করে - ফিল্টারযুক্ত পাঠ্যটি পাওয়া গেছে) বা 1 (যার অর্থ "ত্রুটি" - "পাঠ্য" পাঠ্যটি আউটপুটে প্রদর্শিত হয়নি file)।
- আসল / মিথ্যা প্রস্থান স্থিতিটি
grepআরও পাশ করা shহয় findএবং পুরো -exec sh -c 'file $0 | grep -q text' {} \;পরীক্ষার চূড়ান্ত ফলাফল হিসাবে কাজ করে ।
- যদি উপরে পরীক্ষা ফিরে সত্য ,
-printকমান্ড এক্সিকিউট করা হয় (যেমন পরীক্ষিত ফাইলের নাম ছাপা হয়)।