Solved

Delete files with 0 bytes

Posted on 2004-09-20
10
1,195 Views
Last Modified: 2010-04-21
Hi,

I'm running a Datastage jobs that create 10 files.I have to write a shell script that will find all the files created at that time range ie as soon the script start running, and delete all the files with 0 bytes.

Your answer is highly appreciated.
Thanks
Srinivas
0
Comment
Question by:srpendyala
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
  • +2
10 Comments
 
LVL 40

Expert Comment

by:jlevie
ID: 12104349
find /path-to/dir -type f -empty -exec rm {} \;

Should do it.
0
 
LVL 21

Expert Comment

by:tfewster
ID: 12105718
> ie as soon the script start running...

That sounds a bit risky - What if the job creates the file but doesn't write anything to it for a few seconds? The "delete" task might remove it in that time and you'd lose real data.

What is the problem with a few 0-byte files existing until the Datastage job completes? You could run jlevies command safely then.
0
 
LVL 48

Accepted Solution

by:
Tintin earned 125 total points
ID: 12108341
The -empty option is not available on all versions of find.  A more portable way is

find /path-to/dir -type f -size 0 -exec rm {} \;

0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 40

Expert Comment

by:jlevie
ID: 12108405
Quite true...
0
 

Author Comment

by:srpendyala
ID: 12112950
Thanks for suggestions and answer."tfewster" you are right. appreciated.

I have one more problem when trying to delete files just by using rm   it prompts for -----644  mode ? (y/n) -----
My task is to find all empty files and remove them.So when I'm using following  script

find . -size 0|rm ---    I'm getting the message ---- Usage: rm [-Rfir] file ...

Pls help me in the script which find empty files and rm them.

Thanks in advance
srn
0
 
LVL 40

Expert Comment

by:jlevie
ID: 12115548
The prompt is a result of the file protection mode (644, or rw-r--r--) and the user running the command isn't the owner of the files. Either run the rm command as the user that owns the files or as root.

"find . -size 0|rm" isn't the command that Tintin posted. Try exactly what's in his comment.
0
 
LVL 21

Expert Comment

by:tfewster
ID: 12115550
It looks like the files are owned by another userid and have permissions 644 - so your userid can't modify them.  However, if you have write permissions on the _directory_, you can delete the files - you'll just get the warning that they are read-only (to your id).

If you use the -f option to rm, you won't get the warning.

By the way, `rm` doesn't accept input from stdin, so you can't pipe filenames to it in the way you were trying; Use Tintins command, with the -f option, i.e.
find /path-to/dir -type f -size 0 -exec rm -f {} \;
0
 
LVL 6

Expert Comment

by:Talmash
ID: 12134094
not one line but much saftier

foreach file (`find . -type f`)
if (-z $file) then
rm $file
endif
end

tal
0
 
LVL 48

Expert Comment

by:Tintin
ID: 12138283
Talmash.

Please explain how your script (BTW, needs a #!/bin/csh at the top) is "safer" .
0
 
LVL 6

Expert Comment

by:Talmash
ID: 12153884
just no warnings ,

and I am using it for wipeout for the last 5 years .

I am sure there is SHORTER / NICE way to write it .
I just copy-paste what i know is working for me .

about files that are been used at the moment , I can't protect this .

tal
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This tech tip describes how to install the Solaris Operating System from a tape backup that was created using the Solaris flash archive utility. I have used this procedure on the Solaris 8 and 9 OS, and it shoudl also work well on the Solaris 10 rel…
I promised to write further about my project, and here I am.  First, I needed to setup the Primary Server.  You can read how in this article: Setup FreeBSD Server with full HDD encryption (http://www.experts-exchange.com/OS/Unix/BSD/FreeBSD/A_3660-S…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

689 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question