【linux】 findコマンドで日時を指定する
問題
findコマンドは、何日前、何分前などの指定の結果がイメージしづらいんですけど、もうちょっと直感的な指定や日付指定などできないですか。
答え
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 {} /移動先の/ディレクトリ
コメント