rm

[Linux] Bashで一定件数以上のファイルを削除する

日次バッチなどを作っていると、例えばバックアップファイルは最新30件だけ保存し、それ以上古いファイルは削除したいといった気持ちになりますよね。そんな時に利用するのが次のワンライナー。

$ cd backup/
$ rm -f `ls -t . | tail -n+31`

これだと30日前の日付を計算して毎回削除するといった処理を書かなくて済みます。厳密にn日分確保する必要がある場合は日付の計算を行った方が良いでしょうが、念の為一定期間取っておきたいくらいのゆるい要件であれば十分でしょう。

  • 保存しておきたいファイル数に「+1」することをお忘れなく。
  • ディレクトリを削除する場合はrmに-rをつけてください。

続きを読む