Countof/space used by certain file type


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Countof/space used by certain file type
# 1  
Old 05-05-2003
Countof/space used by certain file type

I am very new to Unix, and am managing a digital asset management system. The GUI lets me do certain things, but I am finding that the real power is in the Solaris back-end. I have been asked to report how many and how much space the xml files in our repository are taking up. Is there a way to do this with a Unix command?

Thanks in advance for your help.

PF

Last edited by pfulgione; 05-05-2003 at 09:48 AM..
# 2  
Old 05-05-2003
That depends.. if they're in one folder, try this:
Code:
cd /some/dir
l *.xml | awk '{total += $5} END {print total}'

If they're in multiple files, try:
Code:
cd /some/dir
l `find . -name "*.xml" -print` | awk '{total += $5} END {print total}'

# 3  
Old 05-15-2003
If there are a lot of files (more than your shell will allow on a command line), this will work. Actually, it works even if there aren't more files than are allowed, but that's a different matter ... Smilie
Code:
find . -name '*.xml' | xargs ls -l |
awk 'NF > 5 {t += $5 ; c++ }
     END { print c, "files take up", t, "bytes" }'

Some systems (like Irix, but there's probably a version that's installable for any system, like *BSD) come with a 'stat' program that will print just the size of a file with something like stat -qs file, in which case the awk bit above would sum on $1 instead of $5.

But your boss's question might mean, "what percentage of the disk is taken up by all these XML files?" This is a bit trickier, since ASCII files don't, in general, fill out the block they're in, and it depends on how many bytes belong to a given inode. F'rinstance, if the particular file system allocates in 2Kbyte segments, this is more useful:
Code:
find . -name '*.xml' |
    xargs du -k |
    awk '$1 % 2 { $1++ }
                { t += $1 ; c++ }
         END { print c, "files take up", t, "Kbytes"}'

du -k reports the file size in Kbytes, rouding up for partial Kbytes. The awk bit checks for partial 2Kbyte allocations and rounds them up because of the prior knowledge about the system. If your system allocates in 8Kbyte segments, just change $1 % 2 { $1++ } to m = $1 % 8 { $1 += 8 - m }. If you want bytes, multiply by 1024; if you want Kbytes, just print t as shown; and if you want Mbytes, divide by 1024 ...

Yes, you can assign to a variable in the pattern part of awk. And yes, in sh, ksh and zsh (and bash, I presume), you can break lines after the pipe symbol and it will do the right thing without an eol backslash, but don't try it in csh.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell script to read file and check file type

Hi, I have a file with few values in it. I need script help to read file line by line and check: 1/if it's a file (with extension eg .java .css .jar etc ) or 2/if it's a file without extension and treat it as a directory and then check if the directory exists in working copy else create one... (6 Replies)
Discussion started by: iaav
6 Replies

2. Shell Programming and Scripting

[solved] File type error (not a regular file)

Hi friend, i have written script as below to check the file existance. but i got error path="/k/p1100/users/jewel/Output" FILENAME=`ls -lrt $path/*HT|tail -1|cut -d "/" -f 8` if ; then echo "$FILENAME is available " chmod 755 $path/$FILENAME /usr/bin/scp... (0 Replies)
Discussion started by: Jewel
0 Replies

3. UNIX for Dummies Questions & Answers

Changing only the first space to a tab in a space delimited text file

Hi, I have a space delimited text file but I only want to change the first space to a tab and keep the rest of the spaces intact. How do I go about doing that? Thanks! (3 Replies)
Discussion started by: evelibertine
3 Replies

4. Shell Programming and Scripting

How to know the file type

Hi I am doing some operation in which files will be dumped in Specific location. I want to know the File type.i.e i am expecting CSV files. So i want to write a script so that i can check the file which are dumped are in CSV Files.xxxx.csv format. (2 Replies)
Discussion started by: Aditya.Gurgaon
2 Replies

5. Red Hat

File system type

Hi all, How to find out what type of file system is my system configured for Red hat linux 8.0 ? whether it is NTFS or FAT32 or FAT16... Can somebody help me on this? Regards, William (4 Replies)
Discussion started by: William1482
4 Replies

6. Shell Programming and Scripting

use perl to get file type ?

Can anybody please tell me how can I determine whether a file is SYMBOLIC LINK, using the stat() function ? So far I have this: my @attrs = stat($fileName); my $mode = $attrs; What next ? (1 Reply)
Discussion started by: the_learner
1 Replies

7. Programming

array type has incomplete element type

Dear colleagues, One of my friend have a problem with c code. While compiling a c program it displays a message like "array type has incomplete element type". Any body can provide a solution for it. Jaganadh.G (1 Reply)
Discussion started by: jaganadh
1 Replies

8. Shell Programming and Scripting

String type to date type

Can one string type variable changed into the date type variable. (1 Reply)
Discussion started by: rinku
1 Replies

9. Programming

file type

Hi Everyone! I am working on a c program which displays all the directories and files under each directory. I want to know what kind of file each is. Like, is the file an ascii text file or english text or a c file. if it is an executable, is it an binary file or a shell script. I was told to... (12 Replies)
Discussion started by: vijlak
12 Replies
Login or Register to Ask a Question