ইউনিক্স সিস্টেমে "ফাইলের ধরণগুলি" হ'ল নিয়মিত ফাইল, ডিরেক্টরি, নামক পাইপ, চরিত্রের বিশেষ ফাইল, প্রতীকী লিঙ্ক ইত্যাদি 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
যদি আপনি পার্ল স্ক্রিপ্টগুলি বা সেই লাইন বরাবর কিছু সন্ধান করছেন তবে এটিতে পাইপ করুন ।