あるパターンにマッチするファイルのうち、最新のものを一つをフルパスで取得して処理をするというシェルスクリプトを作る必要があったのですが、予想外に時間がかかってしまったので、忘れないようにメモ。
LATEST_FILE="`pwd`/`ls -lt *.txt | head -n 1 | gawk '{print $9}'`"
lsの引数にタイムスタンプでソートする-tというオプションがあることは知りませんでした。
† 実行例
たとえばログフォルダで最新のアクセスログを探すとこんな感じで取得できます。
# ls -l *access_log-rw-r--r-- 1 root apache 192389496 12月 7 23:59 20081248access_log-rw-r--r-- 1 root apache 184808167 12月 14 23:59 20081249access_log-rw-r--r-- 1 root apache 175875145 12月 21 23:59 20081250access_log-rw-r--r-- 1 root apache 181980596 12月 28 23:59 20081251access_log-rw-r--r-- 1 root apache 150492697 1月 4 23:59 20081252access_log# LATEST_FILE="`pwd`/`ls -lt *access_log | head -n 1 | gawk '{print $9}'`"# echo $LATEST_FILE/opt/apache/logs/200812/20081252access_log