Linux

Linuxコマンド「find+rm」で日数指定してファイルを一括削除

Linuxコマンド「find+rm」で日数指定してファイルを一括削除

今回は、ファイルを削除するためのLinuxコマンドについての話です。

まず、特定のファイルやディレクトリを削除するだけであれば、こんな感じでrmコマンドを使えばOKです。
# rm -rf ファイル名

普通に削除するだけであれば、これで事足ります。
ですが、1ヶ月以上前のファイルを全て削除したい!!みたいなこともありますよね。

そんな時には、以下のようにfindコマンドを使えば一括でファイルを削除できます。
# find ./ -mtime +30 | xags rm -f

 

簡単に説明すると、「find 削除対象となるディレクトリ -mtime +日数 | xags rm -f」ということです。

この「+日数」の部分を変更すれば、希望の日にちよりも前のファイルを一括で削除出来るようです。

例えば、1週間前より古いファイルを削除したい場合には「+7」としてやればいだけです。
 

逆に、「+7」を「-7」にすると、現時点から1週間以内に作成されたファイルが削除されます。

また、オプションに「-name」を指定すれば特定のファイル名のみを削除、「-type」を指定すれば特定のファイルの種類のみを削除することが出来ます。
例えば、
# find ./ -mtime +30 -name “*.log” -type f | xags rm -f
とすると、1ヶ月以上前のログファイルを一括で全て削除できます。
 

それと、いきなり削除するのが恐い場合には、
# find ./ -mtime +30 -name “*.log” -type f | ls
とすることで、事前に削除するファイルの一覧を取得することもできます。