UNIX에서 쉘 스크립트를 사용하여 1일보다 오래된 로그를 아카이브로 이동하고 싶습니다.

UNIX에서 쉘 스크립트를 사용하여 1일보다 오래된 로그를 아카이브로 이동하고 싶습니다.
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

로그 파일은 "valid.app5s.log.1019, app5s.gf3sts.1019, valid.app5s.gf3log.1019, app5s.gf3log.1019, app5s.gf1sts.1019, valid.app5s.gf1log와 같은 다양한 형식으로 제공됩니다. 1019,app5s.sts.1019".

하지만 나는 이것을 할 수 없습니다. 문제 해결을 도와주세요..

답변1

내가 놓친 것이 없다면 다음을 사용할 수 있습니다 find.

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

그러면 현재 디렉터리에서 1일보다 오래된 파일을 찾아 "arc" 디렉터리로 이동합니다.

답변2

find 명령에 maxlength 사용

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

관련 정보