susukinosu

エンジニアリングって、何だよ

最終更新日からn日経過したファイルを探す(findコマンド)

例えば7日以上経過したjpegファイルを探したい時(んなことあるか?)。
findコマンドの -mtime オプションを使えば良い。

$ find ~/Downloads/ -mtime +7 -type f -name "*.jpg"

みたいな感じに書ける。ただ出力されるのはフルパス。
ファイル名だけ欲しいしソートしたいってなったら、

$ find ~/Downloads/ -mtime +7 -name "*.jpg" | awk -F / '{print $NF}' | sort

とかやればいいのかな。
apache2やらnginxやらのログをローテーションしてる場合はよしなにできるかも。
7日経過したらS3に流すとか。

#!/bin/sh

LOGS_DIR=/var/log/httpd/
LOGS_TMP=/tmp/logs/

find $LOGS_DIR -mtime +7 -type d -name "*" -prune -o -name "access_log*" -print | awk -F / '{print $NF}' | xargs -I@ mv $LOGS_DIR@ $LOGS_TMP@
gzip $LOGS_TMP*
aws s3 mv $LOGS_TMP s3://<ここにバケット名>/access_log/ --recursive

とかですかね。問題なく動くかはわからないどす。
間違っていれば教えていただけると幸いです。
(動かして何か問題が生じても責任は負いかねます)