コピペコードで快適生活

明日使えるソースを自分のために

シェルで古いファイルを一括で消す

バックアップスクリプトでよくやるのだけど、毎回書き方を忘れているのでメモ。

# -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