On Wed, 2002-09-25 at 10:07, Holger Rauch wrote: > Hi Vineet! > > Thanks a lot for your quick reply! > > On Wed, 25 Sep 2002, Vineet Kumar wrote: > > > [...] > > processing the list, i.e. with xargs? It's hard to make suggestions > > without seeing what you're trying to do... > > You're right ;-) What I'm doing is > > FILES=`$LS -lt1 $BACKUP_DIR/arc/*.arc | $TAIL -$NUM_OF_FILES` > for i in $FILES; do > $RM -f $i > done
> I want to remove the oldest $NUM_OF_FILES files and it seems to me that
> piping into tail fails when ls returns too many files.
The failure occures not because of the pipe, but because
$BACKUP_DIR/arc/*.arc is expanded to too many files by the shell.
and, as Vineet said: xargs is great! But it won't solve the problem
here. Probably you want:
find "$BACKUP_DIR/arc" -name '*.arc' -printf '%A@:%p\n' \
| sort -g -t : \
| cut -d : -f 2- \
| head -n "$NUM_OF_FILES" \
| xargs -r rm -f
CAREFUL: this is untested!
I'd rather use 0-terminated records, but cut and head don't grok these,
apparently. So filenames must not have newlines (not a bad requirement,
I'd hope).
If somebody wants to do some clever scripting: I have a similar need,
but not yet found a simple solution: I want to purge some cache
directory and just leave the most recently accessed k megabytes. File
sizes vary greatly, so file count won't help much.
(btw: where in testing is textutils.info page? textutils 2.1-1 doesn't
contain it. Will this reappear with coreutils?)
--
secure email with gpg http://fortytwo.ch/gpg
NOTICE: subkey signature! request key 92082481 from keyserver.kjsl.com
signature.asc
Description: This is a digitally signed message part

