最新のタイムスタンプのファイル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