こんにちは。UNIX(HP-UX)のPOSIXシェルで質問です。
指定したフォルダの中の「現在時刻より12時間前のタイムスタンプのファイルを消す」方法はないでしょうか?
findコマンドは24時間の倍数しか検索できないので、12時間前は指定できません。
12時間以上前のファイルは、すべて消えてかまいません。(例えば15時間前のファイルなど)
できれば抽象的な説明ではなく、具体的で、すぐに動くコーディングを記述して下さると助かります。
以上宜しくお願い致します。

あんまり綺麗じゃないけど、
1.12時間前のタイムスタンプを持つファイルを作成
2.そのファイルより古いものを消す
という手を使うと
DATE=`date -d '12 hours ago' +%m%d%H%M%y`
echo >temp.file
touch $DATE temp.file
find !-newer temp.file -print | xargs rm
rm temp.file
みたいなスクリプトでできるかも知れません。
(実際に試したわけではないのですが)
(findでexecを使わないのは、、個人的な趣味(execだとファイル毎にプロセスを起動する、シェルによっては{}をエスケープする必要があったような、)です、、。)
//-----------timechecker.c
#include
#include
#include
#include
void main (int argc,char *argv[])
{
struct stat buf;
int s,a=0;
time_t t,d;
s = stat(argv[argc-1],&buf);
t = time(&t);
d = t - buf.st_mtime;
printf("%d",(d > (3600*12)));
}
//-----------
$ gcc timechecker.c -o timechecker.bin
## 変更時間が現在より12時間以上古いと1。以内なら0が出力される
## パラメータに何も渡さないとbin本体 沢山渡しても最後のファイルのみしか見ない
## エラーチェック無し