findで古いファイルを削除・移動・圧縮する方法

2023-05-08

findとxargsを使用して、古いファイルを削除・移動・圧縮する方法を紹介します。個人的にはログファイル等をメンテナンス時によく使うコマンドです。

findで、n日より古いファイルを削除する

特定の日数以上のファイルを「-mtime」オプション使って対象としています。下記の場合は60日以上前のファイルとしています。その検索条件にHITしたファイルを「xargs」に渡して「rm」で削除しています

$ find /etc/httpd/log -type f -mtime +60 -name "*.log" | xargs rm -f

findで、n日より古いファイルを移動する

削除のときと同じように、「-mtime」を利用して古いファイルを検索して「xargs」に渡しています。削除とは違い「mv」コマンドで任意のディレクトリに移動しています

$ find /etc/httpd/log -type f -mtime +90 -name "*.log" | xargs mv --target-directory=/var/tmp/backup

findで、n日より古いファイルを圧縮する

削除のときと同じように、「-mtime」を利用して古いファイルを検索して「xargs」に渡しています。削除・移動とは違い「gzip」コマンドで任意のディレクトリに圧縮しています。
また、念のために「! -name “*.gz" 」で圧縮は対象外としています

$ find /etc/httpd/log -type f -mtime +30 -name "*.log*" ! -name "*.gz" | xargs gzip