system management
1752494 メンバー
5264 オンライン
108788 解決策
新規ポスト

指定した日付以前のファイルを削除したい

 
cube
アドバイザー

指定した日付以前のファイルを削除したい

フォーラム参加者様

お世話になっております。

例として、/tmp などにある2004年以前のファイルを全て削除したいと思います。

findコマンドで -mtimeオプションをつければ何とかできなくも無いとは思うのですが、フォーラム参加者様でもう少しスマートな方法をご存じの方がいらっしゃればと思い投稿しました。

ご教授の程よろしくお願いします。
5件の返信5
N.Hanyu
貴重なコントリビューター

指定した日付以前のファイルを削除したい

こんにちは。

私は、findを使うのが一番スマートだと思いますよ。

# find /tmp -mtime +28 -type f -exec rm {} \;

28日以前(2004年以前)のファイルがこれで消えます。

hazelwood
信頼あるコントリビューター

指定した日付以前のファイルを削除したい

いやいや、-mtimeでは、n日前のファイルしか消えないと思いますよ。(n日前より古いファイルにはマッチしません。man pageで確認を。)

私は、目的の日付のファイルを作っておいて、find の-newerオプションで比較しています。

今回の場合、以下のようになります。

touch -t 200412312359 20041231

find /tmp -type f ! -newer 20041231 -exec rm {} \;

rm 20041231

N.Hanyu
貴重なコントリビューター

指定した日付以前のファイルを削除したい

> いやいや、-mtimeでは、n日前のファイルしか消えないと思いますよ

"+"をつけてあげると、それ以前という指定になりますよ。

<> ll

合計 0

-rw-rw-rw- 1 root sys 0 1月 26日 12:00 a

-rw-rw-rw- 1 root sys 0 1月 1日 12:00 b

<> find . -mtime 1 -exec ll {} \;

-rw-rw-rw- 1 root sys 0 1月 26日 12:00 ./a

<> find . -mtime +1 -exec ll {} \;

-rw-rw-rw- 1 root sys 0 1月 1日 12:00 ./b

<> date

2005年01月27日 12時30分54秒

<>
N.Hanyu
貴重なコントリビューター

指定した日付以前のファイルを削除したい

ちょっと日本語に間違いがありました。

"+"をつけるとそれ以前→それより前 です。

cubeさんの質問は、指定した日付だから、

私のは参考までにですね。

hazelwoodさんのが、指定した日付よりですね。
cube
アドバイザー

指定した日付以前のファイルを削除したい

ひなたさん、hazelwoodさん

早速のご回答ありがとうございました。

大変参考になりました。