مثال هایی از دستور split در لینوکس

مثال هایی از دستور split در لینوکس

دستور split

دستور split  به منظور جدا سازی یک فایل بزرگ به فایل هایی باسایز کوچکتر بکار می رود .

مثلا ممکن است که شما یک فایل داده ای بزرگ که از دیتابیس استخراج کرده اید داشته باشید .

معمولا انتقال یا کپی کردن یا خواندن این گونه فایلها زمان بر و نیاز به RAM زیادی می باشد .

لذا در بسیاری مواقع بهتر است که فایل هایی که سایز بزرگ دارند را به فایل هایی با سایز کوچکتر

تقسیم کنیم . در لیوکس دستوری بنام split  داریم که قادر است سایز یک فایل را بر اساس میزان

بایتی که آن فایل دارد به سایزی با بایت های کمتر تقسیم کنید .

 

با مثال هایی نحوه استفاده از دست

برای مشاهده دستورات find , grep  به صفحات دیگر مراجعه نمایید .

ور split را توضیح میدهیم :

دستور split  به شکل کلی به این صورت استفاده می گردد:

split   [options][input[prefix]]

۱- فرض کنید یک ماشین مجازی داریم با ۸GB سایز و می خواهیم

این ماشین مجازی را به یک USB انتقال دهیم .

فرض کنید که نوع فایل سیستم USB از نوع vfat  ۳۲  است .

در این صورت زمانیکه بخواهیم این ماشین مجازی را به USB disk کپی کنیم بدون هیچگونه خطایی ,

عملیات کپی شدن این ماشین مجازی متوقف خواهد شد.علت آن این است که  در نوع فایل سیستم

vfat  حداکثر میزان انتقال یک فایل به اندازه ۲GB است  . بنابراین زمانیکه سایز فایل بیش از ۲GB بایت

باشد انتقال بدرستی صورت نخواهد پذیرفت .خب چاره چیست؟

یکی از روشها انقال فایل با سایر بیشتر از ۲GB به داخل USB  از نوع vfat این است که سایز این فایل را

به فایل های ۲GB تقسیم کرده و سپس این فایلهای کوچکتر را به USB به نحوه انتقال دهیم که در انتهای

کپی مجمعوع فایل ما در آن کپی گردد .

بدین منظور از دستور split به روش زیر استفاده میکنیم :

split  –bytes=2048m      پیشوند _نام_فایل_هایی_که_ایجاد_میشوند    نام__فایل_اصلی

فرض کنید نام ماشین مجازی ای که میخواهیم روی usb منتقل کنیم یک ماشین ویندوز۷ می باشد و

مثلا نام آن win7.img است ؛بنابراین می خواهیم فایلهایی با همین پیشوند یعنی win7_img

ساخته شوند ،بدین منظور از دستور زیر استفاده میکنیم :

 

split  –bytes=2048m   win7.img     win7_img_ 

 در این حالت فایل win7.img که ۸GB است به فایل هایی بصورت زیر با سایز ۲GB تقسیم می شود :

win7_img_aa, win7_img_ab, win7_img_ac, win7_img_ad

به منظور کپی کردن این فایلها به usb  از دستور زیر استفاده میکنیم :

cat  win7_img_*    >  /media/usbdisk/win7.img

در دستور بالا دقت کنید media/usbdis/ نام usbdisk شما در سیستم عامل می باشد که این نام برای

شما ممکن است متفاوت باشد که با دستور df  -Th میتوانید نوع فایل سیستم و نام deviceی که usb

شما به سیستم متصل شده است را بدست آوردید .

 

۲- فرض کنید که یک فایل ویدئویی دارید و می خواهید این فایل را ایمیل کنید

فرض کنید فایلی بنام Security.mp4 دارید و میخواهید این فایل را ایمیل کنید اما چون سایز فایل زیاد

است ممکن است محدودیت در ارسال آن داشته باشید بنابراین میتوانید با دستور split ؛ سایز فایل

را به فایل های کوچکتر تقسیم کرده و بعد هر تکه را جداگانه ایمیل کرده و سپس در زمان گرفتن ایمیل

کلیه فایل ها را در داخل یک folder ریخته و با دستور cat آن ها را بصورت یکجا در یک فایل ذخیره نمایید .

 split   Security.mp4 

چنانچه از دستور بالا استفاده نمایید ؛ یکسری فایل که در هر فایل ۱۰۰۰ خط وجود دارد ایجاد میگردد

و نام فایل ها با xa شروع میشود .

یعنی اگر در دستور split نگویید که سایز فایل های ایجاد شده چقدر باشد بصورت پیش فرض هر فایل

شامل ۱۰۰۰ خط می باشد و پشوند فایل ها با نام xaa, xab  الی آخر نام گذاری میگردد .

حال میتوانید این فایل های xaa,xab,xac و الی آخر را ایمیل کرده  و پس از دریافت آنها با دستور

زیر همه این فایل ها را به یک فایل تبدیل کنید :

cat  x* > Security.mp4

۳- split کردن فایل ها با پیشوند عددی بجای حرفی

همانطور که در مثال های بالا مشاهده کردید ؛ پیش فرض دستور split ، این است که پیشوند فایل ها

بصورت حرفی مرتب شده اند یعنی نام فایل ها split شده بصورت xaa, xab,xac می باشد

میتوانید با گزینه  “d-”  بجای ترتیب حرفی از ترتیب عددی استفاده نمایید

split    -d   video.avi

در این صورت خروجی بصورت  x01,x02,x03  و الی آخر ایجاد خواهد شد .

 

۴- split کردن فایل بر اساس تعداد chunk هایی که مورد نظر ما است

فرض کنید که می خواهیم فایلی را به تعداد ۲۰ تکه یا chunk تقسیم کنیم . یعنی سایز فایل مهم نیست

بلکه تعداد فایل های تقسیم شده مهم است در این صورت از دستور زیر استفاده میکنیم :

split   -n20    Archive.zip

۵- جلوگیری از ایجاد فایل های خالی در دستور split

فرض کنید در تقسیم فایل ها در دستور split در مثال بالا ؛ زمانیکه میخواهید مثلا تعداد chunk ها ۲۰

تا باشد ؛ تعدادی فایل با سایز صفر یا فایل خالی هم ایجاد شود و نیازی به این فایل ها نیست

بنابراین با دستور زیر از ایجاد فایل هایی با سایز صفر جلوگیری میکنیم :

split   -n20  -e  Archive.zip

۶- ایجاد فایل هایی با تعداد خطوط تعیین شده در دستور split

گفتیم که بصورت پیش فرض تعداد خطوطی که دستور split در ایجاد فایل ها در نظر می گیرد ۱۰۰۰

خط می باشد ،حالا می توانیم بگوییم که فایل بزرگ ما را به فایل هایی با تعداد خطوطی که ما

میخواهیم تقسیم کند . مثلا به فایل هایی با تعداد ۲۰۰۰ خط در هر فایل

 split  -l2000    forms.zip

 

برای مشاهده دستورات find , grep  به صفحات دیگر مراجعه نمایید .

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *