一番古い更新日付をチェックする方法とは?

このQ&Aのポイント
  • Red Hat Linux ES 3.0において、5MBになると自動的にファイル名が変更される仕組みがあります。具体的には、[file.log]というファイルが5MBに達すると、年月日時分秒を付けたファイル名[file-YYYY_MM_DD-hh_mm_ss.log]になります。また、このファイルは5世代管理されており、最新のファイルを含めて5つのファイルが存在します。
  • そこで、質問ですが、この5つのファイルの中で一番古い更新日付を持つファイルのみを他のディレクトリにコピーしたい場合、どのような方法が良いでしょうか?一番古い日付を持つ[file-YYYY_MM_DD-hh_mm_ss.log]ファイルを選択する方法を教えてください。
  • この質問に対する回答をお待ちしています。一番古い更新日付を持つファイルを見つける方法や、他のディレクトリにファイルをコピーする方法など、具体的な手順を教えていただければ幸いです。
回答を見る
  • ベストアンサー

一番古い更新日付をチェックする

OS:RedHatLinuxES3.0 下記についてご存知お方がいらっしゃいましたら教えてください。 [file.log]と言うファイルがあります。 このファイルは、5MBになると、5MBに達した時の、年月日時分秒を付けたファイル名[file-YYYY_MM_DD-hh_mm_ss.log]になります。 また、このファイルは5世代管理とするので、[file.log]が一つ、残り4つは[file-YYYY_MM_DD-hh_mm_ss.log]となります。 そこで、質問ですが、この5つのファイルの中で一番古い更新日付を持つファイルのみを他のディレクトリにコピーしようと思っています。 つまり、[file-YYYY_MM_DD-hh_mm_ss.log]ファイル名の一番古い日付を持つファイルを選択したいのですが、いい方法がありましたら教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.1

ls -1 -t | head -1 で一番古いファイルをピックアップするのでできそうな気はします。 たとえば cp `ls -1 -t *.log | head -1` OLDlogs/ みたいな感じで。

pikapika-sun
質問者

お礼

お返事ありがとうございます。 結局、オプション[-r]をつけて、[ls -1 -t -r *.log | head -1]でうまくいっったみたいです。 私の環境では、[-r]をつけないと、更新日付が古い順にソートされなくて・・・。なぜかわかりませんが・・・。 助かりました。ありがとうございました。

関連するQ&A

  • 日付や時刻の"01"を" 1"に変換したいです。

    下記のような問題で悩んでいます。何かよいアイディアがありましたら教えて下さい。 【要件】 ・SimpleDateFormatで指定された書式の文字列にした後、年月日時分秒ミリ秒の"01"~"09"を" 1"~" 9"のように前0を半角スペースに一括変換したい(年は書式がyy形式の場合のみ)。 ・SimpleDateFormatへの書式はエラーが起きない限りどんなものでも受け入れる(通常、書くわけがない書式についても)。 例) "yyyy/MM/dd HH:mm:ss:SSS" "'yyyy/MM/dd HH:mm:ss:SSS形式:'yyyy/MM/dd HH:mm:ss:SSS"  ※''の中にあるMMはテキストなので英字のまま。 "yyyy/MMMMMMMMMMMMMMMMMMMM/dd HH:mm:ss:SSS"  ※Mの数は不明 "yyyy/MM/dd MM MM HH:mm:ss:SSS"  ※月の表示指定が複数 引数 :日付(yyyyMMddHHmmssSSS形式), SimpleDateFormatへの書式 戻り値:SimpleDateFormatで変換後に"01"~"09"を" 1"~" 9"にした文字列 自分なりの検討案としては下記になります。 a.引数の書式をそのままSimpleDateFormatに引き渡ずに、一部修正してから呼び出す。 例)"yyyy/MM/dd HH:mm:ss:SSS"→yyyy/_M/_d _H:_m:_s:__S" ※"_"は半角スペースです。 実際はMやdなどが2桁になる場合は変換しません。 かなりごりごり200行ぐらい試しに書いたのですが、対応できないケースが出てきてその都度エンドレス状態です。 ちょっとこのまま実装するわけにいきません。いつバグがでるか・・・。 b.SimpleDateFormatで変換後に年月日時分秒ミリ秒に該当する箇所に"01"~"09"があったら置換する。  引数の書式からMMやddのindexを保持して、SimpleDateFormatで変換後の該当indexに置換。 例) 書式:"yyyy/MM/dd_HH:mm:ss:SSS" 日付:"20090101010101001" "2009/01/01_01:01:01:001"→"2009/_1/_1__1:_1:_1:__1" ※"_"は半角スペースです。 但し前提として、書式とSimpleDateFormatで変換後の文字列が1対1になっている必要があります。 単純な例ですと 書式:"yyyy/MMMM/dd HH:mm:ss:SSS" 書式のddは11~12桁目ですが、SimpleDateFormatで変換後は下記のようにインデックスがずれます。 "2009/1月/01 01:01:01:001" "2009/12月/01 01:01:01:001" もしかしたら下記のような感じで吸収できるのかもしれませんが、ちょっと個人的に出来そうに思えませんでした。 月が1桁 かつ 書式が"M"の場合 月が1桁 かつ 書式が"MM"の場合 月が1桁 かつ 書式が"MMM"の場合 月が1桁 かつ 書式が"MMMM"の場合 月が1桁 かつ 書式が"Mxn"の場合 月が2桁 かつ 書式が"M"の場合 月が2桁 かつ 書式が"MM"の場合 月が2桁 かつ 書式が"MMM"の場合 月が2桁 かつ 書式が"MMMM"の場合 月が2桁 かつ 書式が"Mxn"の場合 ここ1,2週間ほど煮詰まっています。どなたかアドバイス頂けると助かります。 自分的なネックは書式が限りなくフリー形式なところです。

    • ベストアンサー
    • Java
  • 日付型→文字列

    SQLServer2005の環境にて、 日付型の項目(YYYY/MM/DD HH:MM:SS)から日付のみを抽出したい場合、 現在SUBSTRING(CONVERT(VARCHAR,AA),1,10) と変換を行っているのですが、結果が「MM DD YYYY」となってしまいます。 「YYYY/MM/DD」の形式で取得するにはどのようなSQL文にすればよろしいのでしょうか。

  • 【Access】できればクエリにて 日付(yyyy/mm/dd)+時間(hh:mm)の計算 

    いつもお世話になります。 フィールド「日付」:日付 (S) ~YYYY/MM/DD形式~ と フィールド「時間」:時刻 (S) ~HH/MM形式~ があります。 これらを合算し、 (1)日付 (標準)  ~YYYY/MM/DD HH:MM:SS形式~ (2)日付 (標準?) ~YYYY/MM/DD HH:MM形式~ にしたいのですが、 レコードの更新欄ではどのようにビルドさせればよろしいでしょうか? 教えていただけますでしょうか? よろしくお願いします。

  • MS-DOSでの日付表示

    MS-DOSコマンドで、日付や時刻の%date% %time%ですと、 yyyy/mm/dd hh:mm:ssの表示になります。 バッチファイルを作成して、フォルダ名の頭に日付時刻をつけたいんですが、 yyyymmdd hhmmss の表示形式にする方法が分かりません。 よろしかったら教えて頂けませんでしょうか。

  • 日付型の入力値チェック

    こんにちは。 下記のようなフォーマットで日付型のチェックをしたいと 思っています。最低限(1)YYYYが入力されていればOKで、 最高だと(8)YYYY-MM-DDThh:mm:ss.sTZDまで入力可能です。 この日付が妥当であれるかどうかの判定はどのように するのが良いでしょうか? YYYY[-MM[-DD[Thh[:mm[:ss[.s[TZD]]]]]]] (1)YYYY (2)YYYY-MM (3)YYYY-MM-DD (4)YYYY-MM-DDThh (5)YYYY-MM-DDThh:mm (6)YYYY-MM-DDThh:mm:ss (7)YYYY-MM-DDThh:mm:ss.s (8)YYYY-MM-DDThh:mm:ss.sTZD ちょっと考えたのは、まず、長さを見て各文字列を パースして各場所の数値の妥当性をチェックって 言うものです。これでも出来そうな気もしますが、 他にも良いやり方などありましたら、 ご教示宜しくお願い致します。

    • ベストアンサー
    • Java
  • ファイル名を今日の日付、時刻で保存する

    マクロについて教えてください エクセル(2003?)でマクロを使って ファイルを保存するボタンをつくろうと思います。 「ファイル名を今の月-日-時-分で保存する」 という内容を書きたいと思います。 保存するところまではできるのですが、 今日の月-日-時-分を自動的にファイル名に入れる ところをどうしたらよいかわかりません。 Filename = Format(Date, "yyyy-mm-dd") と入れれば日付が入るのはわかったのですが、 時刻も入れたいです Filename = Format(Date,"yyyy-mm-dd",Time,"hh-mm-ss") こんな風に書いてみたのですが、うまく機能しませんでした ご存知の方、ご教授ください。

  • 「EXCEL」VBAで日付を変換

    ファイルを保存する際に現在時刻を元にファイル名を作成しそれで保存する、というものを作っています。 ですが、 yyyy/mm/dd hh:mm:ss ↓ yyyymmddhhmmss というような変換がウマくいかずに困っています。 どなたか、ご教授頂きたいです。

  • Accessの日付フィールドデータの取得について。

    VbScriptでオブジェクトに、Accessの日付フィールドデータを取得するのですが、その際、 "YYYY/MM/DD HH:MM:SS" の形式で取得するにはどのようにしたらよいのでしょうか。 よろしくお願いします。

  • 日付のフォーマット変換について

    はじめまして。 日付フォーマット変換について質問です。 「Tue Sep 16 04:06:38 JST 2003」 上記のようなStringの値を yyyy/mm/dd hh:mm:ssのように 変換したいのですが、どのような方法を とれば良いのかわからず困っております。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • MySQLのTimestamp(14)型のフィールドにYYYY/MM/DD hh:mm形式のデータをインサートするには

    MySQLのTimestamp(14)型のフィールドに YYYY/MM/DD hh:mm形式のデータをインサートするには どのようにしたらよいのでしょうか? MySQL の Timestamp(14)型(YYYY-MM-DD hh:mm:ss)のフィールドに YYYY/MM/DD hh:mm 形式のデータ(ssに該当するデータがない)を インサートするには、 PHPでどのようにしたらよいのでしょうか? できれば、インサートの際にssに自動的に00をつけたいです。 現在、PHPでinsert文を実行すると、データの桁数が足りないため、 フィールドの値は、0000-00-00 00:00:00になってしまいます。 同じ形式(YYYY/MM/DD hh:mm)のデータをphpMyAdminで インポートすると、自動的にssに00がつき、 YYYY-MM-DD hh:mm:ss(例 2009-10-20 12:10:00) となってくれます。 PHPでもphpMyAdminと同じ処理をしたいのですが、 インターネットで検索してもやり方が見つからず、 どのようにしたらよいのか、わかりません。。。 インサートするデータサイズが83MBと大きいので、 PHPで処理したいと思っています。 (phpMyAdminは8MBまでなので) ご存知の方がいましたら、教えていただけると、 助かります。m(_ _)m レンタルサーバー:さくら インサートするファイル:CSVファイル PHP 5.2.x MySQL 5.1 phpMyAdmin 3.1.3.1

    • ベストアンサー
    • MySQL