最終更新日から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
とかですかね。問題なく動くかはわからないどす。
間違っていれば教えていただけると幸いです。
(動かして何か問題が生じても責任は負いかねます)