[K12OSN] Way OT: scripting help

Les Mikesell les at futuresource.com
Thu May 24 19:16:19 UTC 2007


Dan Young wrote:
> Dimitri Yioulos wrote:
>> I'm still grateful, but that construct didn't work upon test.  The error msg 
>> is "Usage: find [path...] [expression]".  I tried putting the new code in 
>> various places in my original line, but no joy.  Any idea why I'm getting the 
>> error?
> 
> I added a backslash to escape the newline so it would wrap in my mail.
> Can you try putting the whole thing on one line? I shorted some names to
> make it fit here:
> 
> find $WORK -maxdepth 1 -mtime +$DAYS ! -name file -exec rm {} \;
> 
> And test with non-critical data, of course.

I always do it this way:
find ..options... -print0 |xargs -0 command

This way find writes the list of files to stdout, xargs reads them and 
collates into reasonable sized groups and puts them on the command line 
of the specified command.  It's more efficient than exec'ing the command 
for each file and you don't have to worry about the command line size 
limit like you might for a wildcard expansion or
command `find ...options...`
The print0 and -0 xargs option specify that the names will be null 
terminated so embedded newlines in filenames don't confuse things.

find $WORK -maxdepth 1 -mtime +$DAYS ! -name file -print0 |xargs -0 rm

You can leave off the -print0 and xargs part to preview the list or 
redirect it to a file if you want to check it first.

-- 
   Les Mikesell
    les at futuresource.com




More information about the K12OSN mailing list