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

관련 정보