Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Bashで指定した日数・時間より古いファイルを削除する方法【実例付き】

この記事では、指定した日数(または時間・分)より古いファイルを、手動またはBashスクリプトによる自動処理で削除する方法を解説します。実際に使えるサンプルコードも紹介します。

一定期間より古いファイルを削除するには、Linuxの2つのコマンド――rm(削除)とfind(検索)を組み合わせて使用します。

rmコマンドによるファイルの削除

まずはrmコマンドから見ていきましょう。rmコマンドは、Linux上でファイルやディレクトリを削除(remove)するために使用される基本的なコマンドです。

基本的な使い方は以下の通りです。

rm ファイル名

ディレクトリを再帰的に削除する場合は-rオプションを使用します。誤って重要なファイルを消さないよう、実行前に削除対象をよく確認してください。

findコマンドで条件に合うファイルを抽出する

次に必要なのがfindコマンドです。findコマンドは、指定した条件に一致するファイルを検索するためのコマンドで、ここでは「ファイルの更新からの経過時間」を条件として使用します。

主な時間関連のオプションは以下の通りです。

  • -mtime:最終更新日からの経過日数で検索
  • -mmin:最終更新からの経過分数で検索

2つのコマンドを組み合わせた実行例

findrmを組み合わせると、次のようなコマンドになります。

find /path/to/files/* -mtime +7 -exec rm {} \;

このコマンドの動作内容を分解して解説します。

  • find/path/to/filesディレクトリに対して実行されます
    • -mtime +7オプションにより、「7日より前(+7)に更新されたファイル」が検索対象になります
    • -execオプションにより、検索に一致した各ファイルに対して指定コマンドを実行します
  • rmfind-execオプションから呼び出されます
    • findに与えた条件に一致したすべてのファイルを削除します
    • 行末の波括弧{}は一致したファイル名に置き換えられ、\;findが実行するコマンドの終わりを示す記号です

注意: 削除は元に戻せません。本番環境で実行する前に、まず-exec rm {} \;を外してfind単体で実行し、どのファイルが対象になるか必ず確認しましょう。

「日」ではなく「時間・分」単位で指定する場合

日数の代わりに分単位で指定したい場合は、-mtimeの代わりに-mminを使用します。

find /path/to/files/* -mmin +30 -exec rm {} \;

上記の例では、30分より古いファイルがすべて削除されます。同様に-mmin +60とすれば「1時間より古いファイル」という指定になります。

スクリプトとして保存する

毎回コマンドを入力するのは手間なので、スクリプト化しておくと便利です。

#!/bin/bash

find /path/to/files/* -mtime +7 -exec rm {} \;

上記のコードをファイル(例:deletescript.sh)として保存し、実行権限を付与します。

chmod +x deletescript.sh

あとは次のコマンドでいつでも実行できます。

./deletescript.sh

頻繁に使う場合は、シェルのエイリアス(alias)を設定しておけば、どのディレクトリからでも短いコマンドで呼び出せるようになります。

cronで古いファイルの削除を自動化する

定期的に自動実行したい場合は、crontabに登録しましょう。crontabはLinuxでユーザーの定期タスク(スケジュール)を管理するファイルで、次のコマンドで編集できます。

crontab -e

エディタが開いたら、以下の1行を追記します。この例では毎日1回スクリプトが実行されます。

@daily find /path/to/files/* -mtime +7 -exec rm {} \;

@daily以外にも、@hourly(毎時)、@weekly(毎週)などの簡易表記や、標準的なcron書式(0 3 * * *など=毎日午前3時)も利用できます。

まとめ

find-mtime/-mminオプションとrmコマンドを組み合わせれば、古くなったファイルを簡単に一括削除できます。スクリプト化やcronへの登録により、ログファイルやキャッシュのクリーンアップなどを完全に自動化できるので、サーバー運用のディスク容量管理にぜひ活用してください。

  1. Macで大きなファイルを見つけて削除する方法【Finder・ストレージ管理・ターミナル】

    Macのストレージを快適に保つには、定期的に不要なファイルを削除することが大切です。特にサイズの大きいファイルは放置しがちで、気づかないうちにディスクがいっぱいになり、動作が遅くなる原因にもなります。Macの空き容量が不足してきたら、どのファイルが最もスペースを消費しているのかを把握し、効率的に削除することが重要です。この記事では、Macで大きなファイルを見つけるための4つの方法と、隠しファイルの表示方法をご紹介します。これらの方法を活用すれば、Macintosh HDの空き容量を確保し、Macの動作速度を改善できます。この記事でわかることよく使うフォルダから大きなファイルを探す方法Finde

  2. 重複ファイルの削除方法|PCの空き容量を増やして動作を高速化する完全ガイド

    パソコンを整理整頓することは、高速で安定した状態を保つために非常に重要です。そのため、Windowsユーザーなら誰もが、ディスククリーンアップ、デフラグ、レジストリの修復、ウイルススキャンといった定期的なメンテナンス作業を行う必要があります。しかし、意外と見落とされがちな重要なメンテナンス作業がもう一つあります。それが「重複ファイルの削除」です。 重複ファイルとは? どのパソコンにも重複ファイルは存在します。文書、音楽、画像、動画などのコピーのことです。これらのファイルは時間とともに蓄積し、PCの中を散らかしていきます。その結果、空きディスク容量が減少し、ファイルやフォルダが乱雑になってしま