Use Awk and Array to get total size of files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Use Awk and Array to get total size of files
# 8  
Old 03-19-2011
If I have understood correctly,Try this
Code:
#!/bin/sh

ls -lR | egrep ^- > test.txt
Type[1]='"\.avi\$|\.mov\$|\.mp3\$"'
LABEL[1]=Media

Type[2]='"\.doc\$|\.xls\$"'
LABEL[2]=Document

Type[3]='"\.png\$"'
LABEL[3]=Image

for count in 1 2 3;
do
  echo ${LABEL[$count]},`eval egrep ${Type[$count]} test.txt |awk '{ SUM += $5} END { SUM=SUM/1073741824 ; print SUM" GB"}'`
done

# Available space
df -P /home/sheikh | awk 'NR==2{print "Available,0,",$4/1048576 " GB"}'

This User Gave Thanks to pravin27 For This Post:
# 9  
Old 04-04-2011
Thanks Pravin,

I would like to use email to send out my data and picture of graph. Before that if the data as perbelow named "profile.csv". This data "profile.csv" is for generate graph using gnuplot.

profile.csv


Code:
 
Media 894.45
Document 106.35
Picture 75.52
Archive 72.70
Database 0.06

How can reprint again follow this format in email.txt and add "-", "GB" and "Data Profiler" with underline.

Code:
 
Data Profiler
----------------
Media        - 894.45 GB
Document - 106.35 GB
Picture      - 75.52 GB
Archive      - 72.70 GB
Database  - 0.06 GB

Sample in email.txt

Dear Administrator,

Attached is Picture of Graph and Data.

Code:
 
Data Profiler
----------------
Media        - 894.45 GB
Document - 106.35 GB
Picture      - 75.52 GB
Archive      - 72.70 GB
Database  - 0.06 GB

Thanks.

From system.

run to send email:
Code:
 
mutt -s Automation of Graph -a picture1 picture2 picture3 picture4 user@mail.com < email.txt

Thanks.

Sheikh
# 10  
Old 04-05-2011
I recommended gunplot in an earlier post, but gnuplot dosn't have any support for pie charts. You may find R an easier way to go. You will need to install the CRAN plotrix module.

The you can generate your graph from profile.csv like this:

Code:
#!/bin/bash
Val=
Name=
 
while read name val
do
   Name="${Name},\"$name\""
   Val="${Val},$val"
done < profile.csv
 
Name=$(echo $Name | sed 's/^,//')
Val=$(echo $Val | sed 's/^,//')
 
echo "# 3D Exploded Pie Chart
library(plotrix)
jpeg(\"disk.jpg\",height=600,width=800)
slices <- c($Val)
lbls <- c($Name)
pct <- round(slices/sum(slices)*100)
lbls <- paste(lbls, pct) # add percents to labels
lbls <- paste(lbls,\"%  \",sep=\"\") # ad % to labels
pie3D(labelcex=0.9,slices,labels=lbls,explode=0.1,
main=\"Storage Profiler \")" > disk${$}.r
 
/usr/local/bin/rscript.exe disk${$}.r
rm disk${$}.r

Result is
Image
This User Gave Thanks to Chubler_XL For This Post:
# 11  
Old 04-05-2011
Thanks Chubler_XL,

Before that may I know how about csv structure? It is like this?

Code:
 
Media 894.45
Document 106.35
Picture 75.52
Archive 72.70
Database 0.06

and what I need to put inside this?

Code:
 
#!/bin/bash
Val= ?
Name= ?

or your can attach your sample of profile.csv here. Please advice.

Thanks.

Sheikh
# 12  
Old 04-05-2011
Yes, my profile.csv was just like the one in your post:

profile.csv
Code:
Media 894.45
Document 106.35
Picture 75.52
Archive 72.70
Database 0.06

This User Gave Thanks to Chubler_XL For This Post:
# 13  
Old 04-11-2011
Thank you very much Chubler XL. It work!

How about my csv file like this?:

Code:
 
Media,894.45
Document,106.35
Picture,75.52
Archive,72.70
Database,0.06

Between name and value have comma. What I need to change in this scripts?

Thanks.
# 14  
Old 04-11-2011
Just add bits in green as shown:

Code:
OIFS="$IFS"
IFS=','
while read name val
do
   Name="${Name},\"$name\""
   Val="${Val},$val"
done < profile.csv
IFS="$OIFS"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to check total files size in hdfs directory?

Is there a way to calculate the total file size of HDFS file directory in GB or MB? I dont want to use du/df command. Without that is there a way HDFS Directory - /test/my_dir (1 Reply)
Discussion started by: rohit_shinez
1 Replies

2. UNIX for Beginners Questions & Answers

Total size utilizes by the files older than a time span

Through find command I identified the files older that 1 year. I need the overall size utilizes by these 1 year older files. Please share me the command to identify it .Thanks Please post in an adequate technical forum! (3 Replies)
Discussion started by: Sang
3 Replies

3. Solaris

Find the total size of multiple files

If I have a number of files in a directory, for example, test.1 test.2 test.3 abc.1 abc.2 abc.3 and I need to find the total file size of all of the test.* files, I can use du -bc test.* in Linux. However, in Solaris, du does not have the -c option. What can I do in Solaris to get... (11 Replies)
Discussion started by: learnix
11 Replies

4. Shell Programming and Scripting

Checking the total size of all files from a particular date

Hi I have some set of files for a particular date. What is the command that I need to put in for finding the total size of all the files for that particular date. The following command is fetching me the size of all individual files seperately du -h *20101010* 16M file1.20101010 120K... (10 Replies)
Discussion started by: bobby1015
10 Replies

5. UNIX for Dummies Questions & Answers

Command for total number of files (and size) across subdirectories?

Hi all... I have a directory called dbrn. This directory contains an unknown number of subdirectories which in turn contain an unknown number of files. What I want to know is: How many files with extention .ABC can be found in /dbrn across all subdirecties, and what is the total size for... (9 Replies)
Discussion started by: Beun
9 Replies

6. UNIX for Dummies Questions & Answers

get total size of files

as we use du - sh *.frm In This command It will show the list of files and size But I want the Total size that these files in directory with extension .frm How can we do This (6 Replies)
Discussion started by: kaushik02018
6 Replies

7. Shell Programming and Scripting

Getting the total file size for certain files per directory

Hi, I am trying to get the total file size for certain files per directory. I am using find /DirectoryPath -name '*.dta' -exec ls -l {} \; | awk '{ print $NF ": " $5 }' > /users/cergun/My\ Documents/dtafiles.txt but this lists all the files in the directories. I need the total... (9 Replies)
Discussion started by: cergun
9 Replies

8. UNIX for Dummies Questions & Answers

Find total size for some files?

Hi, I'm newbie to Unix. I'd like to count the total size of those files in my directory by date. For example, files on this period 05/01/08 - 05/31/08. If possible can we count by byte instead of kb. if I use $ du - ks , it will add up all files in the dir. thanks, Helen (5 Replies)
Discussion started by: helen008
5 Replies

9. Shell Programming and Scripting

sort files by date, delete oldest, if total size bigger than

hello people i need your help please i want to achieve the following with the simplest, most efficient shell-tools: i have a directory with a lot of files from users. the script should check which partition the dir is on if the partition with the directory is more than 90% full ... (2 Replies)
Discussion started by: scarfake
2 Replies

10. Solaris

command to find out total size of a specific file size (spread over the server)

hi all, in my server there are some specific application files which are spread through out the server... these are spread in folders..sub-folders..chid folders... please help me, how can i find the total size of these specific files in the server... (3 Replies)
Discussion started by: abhinov
3 Replies
Login or Register to Ask a Question