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

関連情報