最新のタイムスタンプのファイル10個を出力

newfiles.sh -a | -m | -c ディレクトリ名
-a Access Time
-m Modify Time
-c Change Time
引数に指定したディレクトリにfindコマンドを実行しファイルのリストを作成。
sortに必要なtmpファイルをmktempコマンドを使い作成し、変数に代入する。
forでファイルのリストを処理し、ファイルの場合のみ処理する。
statコマンドでファイルのタイムスタンプの1970/1/1からの秒数を数え、ファイル名の前に付ける。
作成した秒数付ファイル名のリストをsortコマンドで大きい順に並び替え、
headで10行を取り出し、cutで秒数の部分を削除したファイル名を出力する。

#!/usr/bin/sh
if ! [ -d $2 ]; then
    echo "Appoint a directory"
    exit 1
fi  
sortlists () {
    tmpfilename=`mktemp /tmp/list.XXXXXXXXXX`
    for filename in $allfilelists; do
        if ! [ -d $filename ]; then
            timestump=`stat --format="%$op" $filename 2> /dev/null`
            echo $timestump $filename >> $tmpfilename
        fi
    done 
    sort -k1nr $tmpfilename | head -n 10 | cut -d " " -f2
    rm -f $tmpfilename
}

allfilelists=`find $2 2> /dev/null`
case $1 in
    -a) op=X;;
    -m) op=Y;;
    -c) op=Z;;
    *) echo "Usage : newfiles.sh -a | -m | -c directory"; exit 1;;
esac
sortlists