アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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個を表示させることもできます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/10/06 14:51

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番目のフィールド(ファイル名)を表示という感じです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!