A menos que eu esteja sentindo falta de algo, você pode usar apenas find
:
find . -maxdepth 1 -mtime +1 -type f -exec mv {} arc/ \;
Isso encontrará qualquer arquivo com mais de 1 dia no diretório atual e o moverá para o diretório "arc".
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
Os arquivos de log estão em vários formatos, como "valid.app5s.log.1019, app5s.gf3sts.1019, valid.app5s.gf3log.1019, app5s.gf3log.1019, app5s.gf1sts.1019, válido. app5s.gf1log.1019, app5s.sts.1019 ".
Mas eu não poderia fazer isso. Por favor, ajude-me a resolver o problema ..
A menos que eu esteja sentindo falta de algo, você pode usar apenas find
:
find . -maxdepth 1 -mtime +1 -type f -exec mv {} arc/ \;
Isso encontrará qualquer arquivo com mais de 1 dia no diretório atual e o moverá para o diretório "arc".
use maxdepth no comando find
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
Tags archive shell-script