• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 227
  • Last Modified:

How to list files based on sizes?

Hi,

For you experts I guess it's a small thing, for me as newbie it's a puzzle.

I need a script (Bourne shell) which lists all files in a directory which are not 0 bytes.

So if the directory /tmp has the files
file1.dat   0Kb
file2.dat   3Kb
file3.dat   0Kb
file4.dat   1Kb
file5.dat   6Kb

I expect a string back like "/tmp/file2.dat /tmp/file4.dat /tmp/file5.dat"
And it would be nice if I could pass the directory as input parameter (or via variable)

Can anyone help?
Kind regards
0
ehout
Asked:
ehout
  • 5
  • 3
  • 2
1 Solution
 
sunnycoderCommented:
Hi ehout,

find <dir> type -f -size +0

remove type -f part if you entries other than files to be listed too

Sunnycoder
0
 
sri_prasanthCommented:
hiiii,
ls with -S option will give the  files  in the order of their sizes..................
if u want this in a sorted order then simply give this command

x=`ls -S /tmp`;
echo $x;

Now this x has the names of the files in sorted order of their sizes..................
0
 
ehoutAuthor Commented:
Hi,

Thanx for the quick responses.
The sort order is not relevant. But the output of the function,(BTW, type -f seems to be written as -type f ) Must appear on 1 line. Can I catch it in a variable?
0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
sri_prasanthCommented:
>I could pass the directory as input parameter (or via variable)

#say dir is ur variable which has the directory name then

x=`ls -S $dir`;
echo $x;

This would do that..............
0
 
sunnycoderCommented:
var=`find <dir> -type f -size +0`
echo $var

sorry for the typo
0
 
ehoutAuthor Commented:
Hai sri,

your option seems helpful,
However It lists all the files. But it should omit files of 0 bytes.

If there is a rm option that first will erase all o byte files, that's OK too.

0
 
ehoutAuthor Commented:
Hai sunny,

Thanx for your input too, I'm learning a lot.

Your option actually lists what I want, but can I get these listed files on 1 line?

Reason is I have a certain mailscript and This way I can give multiple files as attachment.

0
 
sunnycoderCommented:
Hi ehout,

I just posted that method
var=`find <dir> -type f -size +0`
echo $var
0
 
ehoutAuthor Commented:
Wait... I was to quick... Your script does a terrific thing.
0
 
ehoutAuthor Commented:
luv you ;-)
Sri, Thanks too for your effort, but sunny's thing was exactly what I needed.

Kind regards
0

Featured Post

2018 Annual Membership Survey

Here at Experts Exchange, we strive to give members the best experience. Help us improve the site by taking this survey today! (Bonus: Be entered to win a great tech prize for participating!)

  • 5
  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now