• ベストアンサー

下階層のファイルを含めての最新ファイルの検索

UNIXで下階層のdirにあるファイルも含めて最新のタイムスタンプのファイルを探したいのですがいい方法はないでしょうか?できればスクリプトを組まずにできればありがたいのですが、無理ならスクリプトを使用してでもできる方法を教えていただけると助かります。

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

  • ベストアンサー
  • geshon
  • ベストアンサー率61% (44/72)
回答No.2

perlスクリプト(とfind) だとこんな感じでしょうか? #!/usr/bin/perl open FH, "find @ARGV -type f |" or die; while (<FH>){ chop; @f = stat; if ($f[9] > $t) { $t=$f[9]; $fn=$_; next; }elsif ($f[9] == $t) { $fn.="\n$_"; } } print $fn; 適当なファイル名で保存して実行属性をつけてください。 $[このファイル名] [探したいpath...] 同じ更新日時のファイルが複数あっても対応可能です。 path は1個でも複数個でも実行できます。 少しいじれば更新日時の若い順 n個を表示させることもできます。

Kasaoka-Taroh
質問者

お礼

ありがとうございます。このスクリプトを参考になんとかやりたいことができそうです。

その他の回答 (1)

回答No.1

GNUのツールを使って良ければ簡単です。 $dir以下を調べるとして、 find $dir -type f -exec stat -c "%Z %n" {} + | sort -nr | head -1 | cut -d' ' -f 2 それぞれのオプションは詳しくはmanやinfoを見てもらうとして、 findでは$dir以下の普通のファイルを対象にstatを各々に適用、 statはフォーマット文字列を指定して、最終変更時間(UNIX time)とファイル名を表示、 sortでUNIX timeの逆順にソート、 headで最初の1行を抜き出して、 cutで空白を区切りとして2番目のフィールド(ファイル名)を表示という感じです。

関連するQ&A