ترفندهای لینوکس : چگونه لیستی از فایل ها را جستجو و نتایج را به صورت فایل فشرده ذخیره نماییم ؟

فرض کنید می خواید تمام تصاویر یک یا چند پوشه که دارای پسوند gif. هستند را پیدا کرده و این تصاویر حاصل از جستجو را به صورت یک فایل آرشیو tar ball تبدیل نمایید ؛ برای آشنایی با نحوه کار ، این آموزش را مطالعه نمایید. روش انجام این کار از طریق خط فرمان – SSH – لینوکس انجام می گیرد.

دستور find برای جستجو در دایرکتوری ها مورد استفاده قرار می گیرد و دستور tar نیز ابزاری برای تهیه آرشیو در سیستم های لینوکس و Unix می باشد ، در اینجا با ادغام این دو دستور می توانیم به هدف مورد نظر که همان یافتن فایل با الگوی خاص (پسوند – نام و …) و آرشیو کردن است برسیم.

نحوه کاربرد دستور find :

find /path/to/search -name "file-to-search" -options
 ## find all Perl (*.pl) files ##
 find $HOME -name "*.pl" -print
 ## find all *.doc files ##
 find $HOME -name "*.doc" -print
 ## find all *.sh (shell scripts) and run ls -l command on it ##
 find . -iname "*.sh" -exec ls -l {} +

 

یک نمونه از نتیجه :

find . -name "*.gif" -exec ls -al {} +
-rw-rw-r-- 1 root root 1849 Jul 20 2017 ./Cloudflare-CPanel-7.0.0/assets/spinner.gif
-rw-rw-r-- 1 root root 2704 Jul 20 2017 ./Cloudflare-CPanel-7.0.0/assets/throbber.gif
-rw-r--r-- 1 669 668 78 Dec 31 2014 ./portal/admin/images/asc.gif
-rw-r--r-- 1 669 668 49 Dec 31 2014 ./portal/admin/images/bar.gif
-rw-r--r-- 1 669 668 1006 Dec 31 2014 ./portal/admin/images/delete.gif
-rw-r--r-- 1 669 668 76 Dec 31 2014 ./portal/admin/images/desc.gif
-rw-r--r-- 1 669 668 1027 Dec 31 2014 ./portal/admin/images/edit.gif
-rw-r--r-- 1 669 668 244 Dec 31 2014 ./portal/admin/images/highpriority.gif
-rw-r--r-- 1 669 668 1033 Dec 31 2014 ./portal/admin/images/info.gif
-rw-r--r-- 1 669 668 404 Dec 31 2014 ./portal/admin/images/loader.gif
-rw-r--r-- 1 669 668 1849 Dec 31 2014 ./portal/admin/images/loading.gif
-rw-r--r-- 1 669 668 668 Dec 31 2014 ./portal/admin/images/loginbg.gif
-rw-r--r-- 1 669 668 248 Dec 31 2014 ./portal/admin/images/lowpriority.gif
-rw-r--r-- 1 669 668 244 Dec 31 2014 ./portal/admin/images/mediumpriority.gif
-rw-r--r-- 1 669 668 281 Dec 31 2014 ./portal/admin/images/movedown.gif
-rw-r--r-- 1 669 668 279 Dec 31 2014 ./portal/admin/images/moveup.gif
-rw-r--r-- 1 669 668 2298 Dec 31 2014 ./portal/admin/images/ordertplpreview.gif
-rw-r--r-- 1 669 668 127 Dec 31 2014 ./portal/admin/images/showcalendar.gif
-rw-r--r-- 1 669 668 43 Dec 31 2014 ./portal/admin/images/spacer.gif
-rw-r--r-- 1 669 668 68 Dec 31 2014 ./portal/admin/images/tick.gif
-rw-r--r-- 1 669 668 339 Dec 31 2014 ./portal/admin/images/updown.gif
-rw-r--r-- 1 669 668 4330 Dec 31 2014 ./portal/admin/templates/blend/images/logo.gif
-rw-r--r-- 1 669 668 301 Dec 31 2014 ./portal/admin/templates/original/images/logobg.gif
-rw-r--r-- 1 669 668 67 Dec 31 2014 ./portal/admin/templates/original/images/menubg.gif
-rw-r--r-- 1 669 668 72 Dec 31 2014 ./portal/admin/templates/original/images/sidebarbg.gif

 

نحوه کاربرد دستور tar

tar -cvf /home/pardishosting/projects.tar /home/pardishosting/projects

ادغام find و tar

یافتن فایل هایی با پسوند doc. و آرشیو کردن آنها در فایل out.tar

find /dir/to/search/ -name "*.doc" -exec tar -rvf out.tar {} \;

یا داریم :

find /dir/to/search/ -name "*.doc" -exec tar -rvf out.tar {} +

 

برای مثال :

find $HOME -name "*.doc" -exec tar -rvf /tmp/all-doc-files.tar "{}" \;

یا :

find $HOME -name "*.doc" -exec tar -rvf /tmp/all-doc-files.tar "{}" +

که در دستورات بالا :

-name “*.doc” تنظیم عملکرد دستور است و وظیفه آن یافتن تمام فایل هایی است که پسوند آنها doc باشد. و مکان و حوزه جستجو $Home یا پوشه های اختصاص داده شده به user است. و تنظیم عملکرد exec -tar وظیفه اجرای دستور بعدی را دارد به این صورت که با اتمام دستور اول بلافاصله نتایح به دستور دوم وصل می شوند تا از آنها به منظور اجرای دستور دوم استفاده شود.

در این دستور هم تنظیم r- وظیفه الحاق فایل های پیدا شده از جستجو به ارشیو ایجاد شده را دارد. v- نمایش وضیعت اجرای دستور را انجام می دهد . (اگر استفاده نشود تا انتهای اجرای دستور بر روی صفحه نمایش وضیعت جزیی اجرایی دستور قابل مشاهده نیست.)

برای مطالعه بیشتر درباره جزییات و عملکرد دستورات می توانید از man استفاده کنید :

$ man tar
 $ man find
 $ man xargs
 $ man bash

 

 

 

 

 

 

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

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