入門UNIXシェルプログラミング の第8章に出てきた例なのですが、
日常の仕事で使えそうなのでメモしておきます。
touch -t ${DATETIME} /tmp/compared-file.$$
if [ -n "`find ${FILENAME} -newer /tmp/compared-file.$$ -print`" ]; then
echo "Yes: ${FILENAME} is newer than ${DATETIME}."
else
echo "No: ${FILENAME} is not newer than ${DATETIME}."
rm -f /tmp/compared-file.$$
上記で、
- FILENAME には対象のファイルパス
- DATETIMEには
[[CC]YY]MMDDhhmm[.SS]
形式の日時が入っているとする。('20160804194500'みたいな感じ)
3つのコマンド使いがポイント:
- touch コマンドを日時指定ありで使って比較対象の空のファイルを作る。
(上記の例では、-t オプションを使っているが、-d でも可) - find コマンドの -newer オプションを使って、調べたいファイルがこの空のファイルよりも新しいかどうかを、
- test コマンドの -n でfindが空ではない文字列を返すかどうかでチェックする。