বাইনারি ফাইলগুলি গ্রেপ করার জন্য সমান কমান্ড


24

আমার কাছে বাইনারিগুলির একটি গুচ্ছ রয়েছে এবং আমি জানি যে এই বাইনারিগুলির ভিতরে আমি খুঁজে পেতে চাইছি এমন স্ট্রিং রয়েছে।

আমি একটি করতে চাই:

grep -lir "the string I am looking for"

এবং একটি নির্দিষ্ট ডিরেক্টরিতে থাকা সমস্ত বাইনারিগুলির একটি তালিকা পান যাতে স্ট্রিং রয়েছে তবে grep -lirদৃশ্যত এই ফাইলগুলির সাথে কাজ করছে না।

টার্মিনাল থেকে এই জাতীয় অনুসন্ধান করতে পারে এমন কোনও আদেশ রয়েছে কি?

উত্তর:


24

সঙ্গে গনুহ, grep , আপনি ব্যবহার করতে পারেন -a এটা টেক্সট ফাইল হিসেবে বাইনারি ফাইল একইরূপে করার বিকল্প:

grep -ali -- string file

যদি আপনার গ্রেপ সংস্করণ সমর্থন না করে তবে -aআপনি এর পরিবর্তে এসিসি ব্যবহার করতে পারেন । Ack 1.x এর -aসাহায্যে আপনার ack 2.x এর সাহায্যে বিকল্প অন্তর্ভুক্ত করা দরকার , যেহেতু অনুসন্ধানের সময় ডিফল্টরূপে অ-পাঠ্য ফাইল অন্তর্ভুক্ত থাকে (যখন আপনি কোনও ফাইল নির্দিষ্ট করেন নি কেবল তখনই অ-পাঠ্য ফাইলকে উপেক্ষা করা হবে)।


আমি কি ackনিজের স্ব-বর্ণনার ভুল লেখা করছি ? (ম্যানুয়ালটিতে) "ack 2.x প্রতিটি নিয়মিত, নন-বাইনারি ফাইল সন্ধান করবে যা স্পষ্টভাবে উপেক্ষা করা হয়নি [blah blah]" সুতরাং এ্যাক্ট 2.x এর মতো মনে হয় যে বিষয়বস্তুটি যদি দেখা যায় তবে তাড়াতাড়ি কোনও ফাইল পড়া বন্ধ করা উচিত বাইনারি।
পিটার কর্ডেস

1
@ পিটারকার্ডস: কোনও ফাইল নির্বাচন করা না হলে এটি ঘটেছিল। চেষ্টা করুন ack grep /bin/grepএবং আপনি ফলাফল পাবেন। বিভ্রান্তি রোধ করতে আমি আমার উত্তর আপডেট করেছি।
cuonglm

1
আপনার বাইনারি থেকে স্ট্রিংগুলি পেতে স্ট্রিং কমান্ডটি ব্যবহার করে দেখুন।
উয়েউ বার্গার 21

23

কমান্ডটি stringsকোনও ফাইল থেকে সমস্ত আসকি ডেটা বের করে দেবে, যদি আপনি grepতার ফলাফলটি পরে করেন তবে আপনি নিজের ডেটা অনুসন্ধান করতে পারেন:

strings <filename> | grep "search text"

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এই বাইনারি এই কাজের জন্য ভাল ফিট।
ভ্লাদিস্লাভস ডভগ্লেক্লেস

5
@ এক্সিয়ন: এটি ব্যবহার করা সর্বদা ভাল নয় strings, আরও তথ্যের জন্য এখানে পড়ুন ।
cuonglm

1
যেহেতু লক্ষ্যটি নির্ধারণ করা হয় যে কোন বাইনারিগুলিতে স্ট্রিং রয়েছে strings -fতা আরও উপযুক্ত।
জেমসডলিন

এটি একটি ভাল উত্তর।
Xofo

9

আপনার প্রশ্নটি বাইনারি ফাইলগুলির সন্ধান সম্পর্কে যা একটি প্যাটার্ন ধারণ করে (এবং আমাদের ইতিমধ্যে খুব ভাল উত্তর আছে!)। পরিপূরক আমরা ঘটনাগুলি পেতে চাই।

আমি প্রায়শই ব্যবহার করি

grep -aPo '.{0,20}pattern.{0,20}'  binfile

20-চরের আশেপাশের প্রসঙ্গ পেতে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.