シェルで古いファイルを一括で消す
バックアップスクリプトでよくやるのだけど、毎回書き方を忘れているのでメモ。
# -execオプションを使う版 # {} が対象のファイルパスに置換されて実行される。 # -mtime +3 => 最終更新日時が、過去〜4(3+1)日前のファイルを表示する find ${TARGET_DIR} -type f -mtime +3 -exec rm -f {}; # xargsを使う版 # こっちのほうが-execオプションより速い find ${TARGET_DIR} -type f -mtime +3 | xargs rm -f
バックアップ数の世代制限を超えたら消す場合はこんな
cd ${BACKUP_DIR}; REVISION_COUNT=`ls | wc -l`; if [ ${REVISION_COUNT} -gt 10 ]; then ls | head -1 | xargs -Rf rm fi