انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: تشخیص تغییرات حجم فایل‌های یک دایرکتوری  (دفعات بازدید: 1247 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین Nelson

  • Jr. Member
  • *
  • ارسال: 57
  • جنسیت : پسر
میخوام از تغییرات یکسری فایل با پسوند مشخص در یه دایرکتوری یک گزارش درست کنم. حجم این فایل‌ها در طول روز تغییر میکنه و می‌خوام یه لیست بسازم که اسم فایل + حجمش در اول روز + حجمش در آخر روز رو داشته باشه
(دو تا اسکریپت که در کرون تب اجرا میشن)
خودم یه راه حل نصفه و نیمه دارم :
ls -alh *.tar.gz | awk 'BEGIN {OFS = "..."} {print $9,$5} END {print "---Done---"}'که خروجی میشه چیزی شبیه این:
file1.tar.gz...169M
file2.tar.gz...193M
file3.tar.gz...88M
file4.tar.gz...158M
---Done---
حالا نمیدونم چطور حجم فایل‌ها رو که‌ آخر روز بدست میارم به انتهای هر خط اضافه کنم که این شکلی بشه :
file1.tar.gz...169M...180M
file2.tar.gz...193M...220M
file3.tar.gz...88M...110M
file4.tar.gz...158M...175M
---Done---
خودم فکر کردم شاید بشه دوتا فایل درست کنم مثل خروجی اول بعد ستون دوم فایل دوم که حجم فایل‌ها در آخر روزه رو با کات جدا کنم و به فایل اول اضافه کنم!! ولی احتمالا راه های بهتری هم هست. و یک مسئله دیگه هم اینه که ممکنه یه فایل جدید درست شده باشه که در ابتدای روز نبوده و اون هم باید توی لیست بیاد

ممنون میشم اگه نظری داشتید بگید

آفلاین alieblice

  • High Hero Member
  • *
  • ارسال: 1275
فکر کنم با دستور join بشه.
برا دستور join تو دو فایلی که میخاین جدولاشو کنار هم بزارین باید یک جدول تو دو تا فایل یکی باشه که این جا اسامی فایلا برا شما یکی هست.
این جا برا oin گفته :
http://www.albany.edu/~ig4895/join.htm
http://linux.101hacks.com/linux-commands/join-command-examples/

این جام گفته که با دستور sed چه جوری یک چیزی رو به اخر یک خط اپند کنین
http://stackoverflow.com/questions/2516343/add-at-the-end-of-the-line-with-sed

آفلاین Nelson

  • Jr. Member
  • *
  • ارسال: 57
  • جنسیت : پسر
ممنون که وقت گذاشتی با join درست شد. با کمی تغییرات

ls -alh *.tar.gz | awk 'BEGIN {OFS = " == "} {print $9,$5} END {print "---Done---"}' > report۱file1.tar.gz == 169M
file2.tar.gz == 193M
file3.tar.gz == 88M
file4.tar.gz == 158M
---Done---

ls -alh *.tar.gz | awk 'BEGIN {OFS = " --> "} {print $9,$5} END {print "---Done---"}' > report2file1.tar.gz --> 180M
file2.tar.gz --> 293M
file3.tar.gz --> 150M
file4.tar.gz --> 170M
file5.tar.gz --> 106M
file6.tar.gz --> 24M
file7.tar.gz --> 34M
---Done---

با a2 تمام سطر های فایل دوم رو اضافه می‌کنیم تا اگه فایل جدیدی بود نشون بده
join -a2 report1 report2 > reportfile1.tar.gz == 169M --> 180M
file2.tar.gz == 193M --> 293M
file3.tar.gz == 113M --> 150M
file4.tar.gz == 158M --> 170M
file5.tar.gz == 96M --> 106M
file6.tar.gz --> 24M
file7.tar.gz --> 34M
---Done---

بازم ممنون  :)