Quiero mover registros de más de 1 día para archivarlos usando scripts de shell en UNIX

Quiero mover registros de más de 1 día para archivarlos usando scripts de shell en UNIX
cd /home/usr/bin/logs
find . -mtime +1 -print | sed -n -e '/\.\/arc/d' -e 's/.*\//' -e '/*.[0-9]$/p' |  while read i
do
if [-f arc/$i]
then
cat $i >> arc/$i
rm $i
else
mv $i arc
fi
done

Los archivos de registro están en varios formatos, como "valid.app5s.log.1019, app5s.gf3sts.1019, valid.app5s.gf3log.1019, app5s.gf3log.1019, app5s.gf1sts.1019,valid.app5s.gf1log .1019, aplicación5s.sts.1019".

Pero no pude hacerlo con esto. Por favor, ayúdame a solucionar el problema.

Respuesta1

A menos que me falte algo, puedes usar find:

find . -maxdepth 1 -mtime +1 -type f -exec mv {} arc/ \;

Eso encontrará cualquier archivo con más de 1 día de antigüedad en el directorio actual y lo moverá al directorio "arc".

Respuesta2

use max Depth en el comando de búsqueda

cd /home/usr/bin/logs
find . -maxdepth 1 -mtime +1 -print |  while read i
do
    if [ -f arc/$i ]
    then
        cat $i >> arc/$i
        rm $i
    else
        mv $i arc
    fi
done

información relacionada