ইউনিক্স সিস্টেমে "ফাইলের ধরণগুলি" হ'ল নিয়মিত ফাইল, ডিরেক্টরি, নামক পাইপ, চরিত্রের বিশেষ ফাইল, প্রতীকী লিঙ্ক ইত্যাদি files এগুলি সেই ধরণের ফাইল যা findতার -typeবিকল্প দিয়ে ফিল্টার করতে পারে ।
findউপযোগ নিজেই একটি "শেল স্ক্রিপ্ট", "JPEG চিত্র ফাইল" বা অন্য কোন মধ্যে নয় আলাদা করতে পারে এমন নিয়মিত ফাইলের প্রকার । এই ধরণের ডেটা fileইউটিলিটি দ্বারা পৃথক করা যেতে পারে , যা ফাইলগুলির মধ্যে নির্দিষ্ট স্বাক্ষরগুলি তাদের প্রকার নির্ধারণের জন্য দেখায়।
বিভিন্ন ধরণের ডেটা ফাইলের লেবেল করার একটি সাধারণ উপায় হ'ল তাদের মাইম টাইপ , এবং fileকোনও ফাইলের মাইমে টাইপ নির্ধারণ করতে সক্ষম।
ব্যবহার fileসঙ্গে findনিয়মিত ফাইল MIME প্রকার, এবং ব্যবহার করে একমাত্র শেল স্ক্রিপ্ট এটি সনাক্ত করতে:
find . -type f -exec sh -c '
case $( file -bi "$1" ) in
*/x-shellscript*) exit 0
esac
exit 1' sh {} ';' -print
বা, ব্যবহার করে bash,
find . -type f \
-exec bash -c '[[ "$( file -bi "$1" )" == */x-shellscript* ]]' bash {} ';' \
-print
যোগ -name sunriseসামনে -execআপনি শুধুমাত্র এই নামের স্ক্রিপ্ট সনাক্ত করতে ইচ্ছুক।
findকমান্ড উপরে অথবা বর্তমান ডিরেক্টরির নীচের সমস্ত নিয়মিত ফাইল পাবেন, এবং প্রতিটি ফাইলের কল জন্য একটি সংক্ষিপ্ত ইন-লাইন শেল স্ক্রিপ্ট। এই স্ক্রিপ্টটি file -biপাওয়া ফাইলটিতে চলে এবং শূন্য প্রস্থান স্থিতি দিয়ে প্রস্থান করে যদি সেই কমান্ডের আউটপুটটিতে স্ট্রিং থাকে /x-shellscript। যদি আউটপুটে সেই স্ট্রিংটি না থাকে তবে এটি একটি শূন্য-বহির্গমন স্থিতি সহ প্রস্থান করে যা findপরবর্তী ফাইলের সাথে সাথেই অবিরত হতে থাকে causes যদি ফাইলটি শেল স্ক্রিপ্ট হিসাবে দেখা যায়, findকমান্ডটি ফাইলের পথের নাম আউটপুট করতে এগিয়ে যাবে ( -printশেষে, যা অন্য কোনও ক্রিয়া দ্বারা প্রতিস্থাপনও করা যেতে পারে)।
file -biকমান্ড ইচ্ছা আউটপুট ফাইলের MIME প্রকার। লিনাক্সে শেল স্ক্রিপ্টের (এবং বেশিরভাগ অন্যান্য সিস্টেমে), এটির মতো কিছু হবে
text/x-shellscript; charset=us-ascii
fileইউটিলিটির সামান্য পুরানো বৈকল্পিক সহ সিস্টেমে , এটি হতে পারে
application/x-shellscript
সাধারণ বিট হ'ল /x-shellscriptসাবস্ট্রিং।
লক্ষ্য করুন MacOS উপর, আপনি ব্যবহার করতে হবে file -bIপরিবর্তে file -biকারণ কারণে ( -iবিকল্প কিছু পুরোপুরি ভিন্ন না)। ম্যাকোসের আউটপুটটি লিনাক্স সিস্টেমের মতো similar
আপনি কাজ করতে পারে যে অন্য সঙ্গে প্রতিটি পাওয়া শেল স্ক্রিপ্ট উপর কিছু কাস্টম ক্রিয়াটি জানতে চাইলে তার স্ত্রী -execস্থানে -printমধ্যে findউপরে কমান্ড, কিন্তু এটি সম্ভব করতে হবে
find . -type f -exec sh -c '
for pathname do
case $( file -bi "$pathname" ) in
*/x-shellscript*) ;;
*) continue
esac
# some code here that acts on "$pathname"
done' sh {} +
বা, সাথে bash,
find . -type f -exec bash -c '
for pathname do
[[ "$( file -bi "$pathname" )" != */x-shellscript* ]] && continue
# some code here that acts on "$pathname"
done' bash {} +
সম্পর্কিত:
--filetypeকমান্ড বা অন্য কোনও কিছুর বিকল্প নেই যা আপনাকে ফাইলের ধরণটি জানাবে। কেবলমাত্র আপনি যা করতে পারেন তা ব্যবহার করুন--exec file {} \;এবং তারপরে আপনি পাইপgrep Bourneস্ক্রিপ্টগুলি সন্ধান করছেন বাgrep Perlযদি আপনি পার্ল স্ক্রিপ্টগুলি বা সেই লাইন বরাবর কিছু সন্ধান করছেন তবে এটিতে পাইপ করুন ।