シェルで12時間前のファイルを消す方法

OKWave 2007年08月08日 13時00分

  • このエントリーをはてなブックマークに追加
シェルで12時間前のファイルを消す方法

こんにちは。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本体 沢山渡しても最後のファイルのみしか見ない
## エラーチェック無し
  • このエントリーをはてなブックマークに追加
関連キーワード
OS

SpecialPR

  • 「奉行シリーズ」の電話サポート革命!活用事例をご紹介

    「ナビダイヤル」の「トラフィックレポート」を利用したことで着信前のコール数や
    離脱数など、コールセンターのパフォーマンスをリアルタイムに把握するに成功。詳細はこちらから

  • デジタル変革か?ゲームセットか?

    デジタルを駆使する破壊的なプレーヤーの出現、既存のビジネスモデルで競争力を持つプレイヤーはデジタル活用による変革が迫られている。これを読めばデジタル変革の全体像がわかる!