head
বা এর মতো কমান্ড ব্যবহার করার ক্ষেত্রে প্রধান সমস্যাটি tail
হ'ল তারা লাইন-ভিত্তিক এবং বাইনারি ফাইলগুলি নয়। যদি তাদের মধ্যে নতুন লাইন থাকে তবে এগুলি প্রায়শই একটি লাইনের শেষ উপস্থাপন করতে ব্যবহৃত হয় না এবং যদি হয় তবে তারা প্রোগ্রাম বার্তাগুলি বা ডেটা ফিল্ডের মতো স্ট্রিংয়ের অংশ হতে পারে।
যদি কোনও উপায়ে ডেটা কাঠামোগত হয় তবে বিভক্ত পয়েন্টগুলি বেছে নেওয়ার ক্ষেত্রে আপনাকে এটিকে বিবেচনায় নিতে হবে যাতে আপনি মাঝখানে কাঠামো ভাঙেন না।
আপনি যদি ফাইলটির কাঠামো জানেন তবে আপনি যেমন একটি কমান্ড ব্যবহার করতে পারেন
dd -if input-file -of output-file ...
বিকল্পগুলিতে কেবলমাত্র নির্দিষ্ট আকারের এতগুলি ব্লকের ডেটা ফাইলটিতে অফসেট করে নির্দিষ্ট (বর্ধিত) থেকে অনুলিপি করা যায়।
দেখে মনে হচ্ছে split
@egmont দ্বারা উল্লিখিত কমান্ডটি আপনার জন্য এই প্রক্রিয়াটি স্বয়ংক্রিয় করবে, তবে এটি ডিফল্টরূপে লাইন-ওরিয়েন্টেড বলে মনে হচ্ছে, সুতরাং আপনাকে অতিরিক্ত বিকল্পগুলি নির্দিষ্ট করতে হবে যেমন --bytes count
ফাইলের প্রতিটি টুকরা কত বড় হওয়া উচিত তা তা জানাতে হবে থাকা.
পার্শ্ব নোট হিসাবে, যদি আপনি কোনও ফাইলের মধ্যে কী জানেন না তবে সন্দেহ করেন যে এটিতে অন্তত কিছু অর্থপূর্ণ পাঠ্যগত ডেটা রয়েছে তবে strings
কমান্ডটি আপনার সাথে কী আচরণ করছে তা দেখার জন্য প্রথমে নজর দেওয়ার এক দুর্দান্ত উপায়।
strings -n 6 file | less
কমপক্ষে ছয় অক্ষর দৈর্ঘ্যের মুদ্রণযোগ্য অক্ষরগুলির সমস্ত রান খুঁজে পাবে এবং এটি একটি পেজারে প্রদর্শন করবে যাতে তারা টার্মিনালে উড়ে না যায়। 4 টি অক্ষরের ডিফল্টের চেয়ে কিছুটা বড় নম্বর ব্যবহার করা তথ্যের ক্ষুদ্র স্নিপেটগুলি মুছে ফেলতে সহায়তা করে যা কেবল প্রিন্টযোগ্য হতে পারে তবে ফাইলটিতে সেভাবে ব্যবহৃত হচ্ছে না।
আপনার যদি পরে বাইনারি সম্পাদকের মতো আরও বিশদে ফাইলটি অন্বেষণ hexedit
করতে হয় তবে আপনার কাছে এমন কয়েকটি ল্যান্ডমার্ক থাকবে যেখানে উল্লেখ করা হবে আকর্ষণীয় কিছু পাওয়া যাবে।
strings
একটি বিকল্প রয়েছে - t x
যা প্রতিটি মুদ্রিত স্ট্রিংটি হেক্সাডেসিমালে (ওষুধের জন্য / দশমিকের জন্য ডি) এর অফসেটের সাথে ফাইলের মধ্যে আগে চলে যাবে যাতে আপনি এটি কোথায় খুঁজে পাবেন তা জানেন। এমনকি খুব ছোট ফাইলগুলি যখন আপনাকে চরিত্র অনুসারে চরিত্রের দিকে তাকাতে হয় তখন তা মোকাবিলা করার জন্য অনেক কিছুই।
split
কমান্ডটি একবার দেখুন ।