古いファイルを削除する必要があるbashスクリプトを書いています。
現在、以下を使用して実装されています。
find $LOCATION -name $REQUIRED_FILES -type f -mtime +1 -delete
これにより、1日より古いファイルが削除されます。
ただし、1日よりも細かい解像度が必要な場合(6時間前など)はどうなりますか? findや-mtimeを使用しているように、すてきな方法がありますか?
このトリックを行うには、1時間前にファイルを作成し、-newer file
引数を使用します。
(または、touch -t
を使用してこのようなファイルを作成します)。
ここに私のために働いたアプローチがあります(そして、私はそれが上で使用されているのを見ません)
$ find /path/to/the/folder -name *.* -mmin +59 -delete > /dev/null
フォルダをそのままにして、59分以上経過したすべてのファイルを削除します。
SunOS 5.10の場合
Example 6 Selecting a File Using 24-hour Mode
The descriptions of -atime, -ctime, and -mtime use the ter-
minology n ``24-hour periods''. For example, a file accessed
at 23:59 is selected by:
example% find . -atime -1 -print
at 00:01 the next day (less than 24 hours later, not more
than one day ago). The midnight boundary between days has no
effect on the 24-hour calculation.
@iconoclastが comment で別の答えについて疑問に思っていた方法を実行するためにできることを次に示します。
ユーザーのcrontabまたは/etc/crontab
を使用してファイル/tmp/hour
を作成します。
# m h dom mon dow user command
0 * * * * root /usr/bin/touch /tmp/hour > /dev/null 2>&1
次に、これを使用してコマンドを実行します。
find /tmp/ -daystart -maxdepth 1 -not -newer /tmp/hour -type f -name "for_one_hour_files*" -exec do_something {} \;
「find」のバージョンに「-mmin」がない場合、「-mtime -0.041667」は「過去1時間以内」にかなり近いため、次のように使用します。
-mtime +(X * 0.041667)
したがって、Xが6時間を意味する場合、次のようになります。
find . -mtime +0.25 -ls
24時間* 0.25 = 6時間なので動作します
find $PATH -name $log_prefix"*"$log_ext -mmin +$num_mins -exec rm -f {} \;
-mminは分単位です。
マニュアルページを見てみてください。
man find
より多くのタイプ。