Skip to content
戻る

findコマンドを使ってファイル・ディレクトリを削除する

Published:  at  08:00

概要

findコマンドの使いたいオプションは毎回同じなのに、記憶に定着するほど使わなくて毎回ググってしまうのでメモの整理がてらブログに投稿。

コマンド

findコマンドを使用して特定のファイル・ディレクトリを削除したい等のシチュエーションで利用する。

find /somthing/your/path -mtime +365 -delete

上記の場合、空ではないディレクトリが存在していると削除に失敗するのでファイルに限定するか他のコマンドに変更する必要がある。

find /somthing/your/path -mtime +365 -type f -delete

/somthing/yyyy/mm/ddと言った日付で区切られたディレクトリを削除する場合は下記のように rm コマンドを利用する。
※削除対象ディレクトリの最終更新日が意図した通りか注意が必要。

find /somthing/your/path -mtime +365 -type d -exec rm -rf {} \;

今回記事を書くにあたって改めて調べたら-exec rm -rf {} +とすることで対象パスがすべて展開されてスピードが出るらしい。
次回使う機会があったら使ってみたい。

結局findしたファイルを消す場合はどんなコマンドを使うか - 雑多に技術メモと他色々 🔗

/somthing/yyyy/mm/ddと言った日付で区切られたディレクトリで上位ディレクトリを削除したくない場合(日付に該当するディレクトリのみ削除したい場合)は下記の様にパスで絞り、検索対象の深さも0にする。

find /somthing/20[0-9][0-9]/[0-9][0-9]/[0-9][0-9] -maxdepth 0 -mtime +365 -type d -exec rm -rf {} \;

蛇足

日付の部分をdateコマンドで生成してrmコマンドに渡すみたいな運用をしていたが、うるう年の2/29のディレクトリが消えてなくてfindコマンドを色々いじってた。



次の記事
N日より前のファイルを削除するコマンド