SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【linux】 findコマンドで日時を指定する

問題

findコマンドは、何日前、何分前などの指定の結果がイメージしづらいんですけど、もうちょっと直感的な指定や日付指定などできないですか。

bash

答え

findのバージョンによるが、-newer何々 というオプションが使える環境であれば可能。

find /home/XXX -newermt '2016-04-25' ! -newermt '2016-04-26' -delete

→ ディレクトリ /home/XXX 以下で、
更新日が2016/04/25 00:00:00 ~2016/04/26 00:00:00 の24時間内のものを
(2016/04/25 00:00:00 を含まない、2016/04/26 00:00:00 を含むで)
削除する。

-newer に続けて、m で更新日、tで比較対象が日付形式文字列であることを示す。

どうしても0時0分0秒は含みたくなければ、長くなるが ‘2016-04-25 23:59:59.9999’ という書き方も可能。


削除ではなく移動をしたい場合は以下のようになる。

find /home/XXX -newermt '2016-04-25' ! -newermt '2016-04-26' -exec mv {} /移動先の/ディレクトリ \;
find /home/XXX -newermt '2016-04-25' ! -newermt '2016-04-26' | xargs -i mv {} /移動先の/ディレクトリ

関連するメモ

コメント