ファイルが作成されてから何秒経っているか?
このファイルが、作成されてから何秒経過したか。それ知りたいことありませんか?
ファイルAがファイルBより古いときはファイルAを更新するとか
作成後(更新後)の経過秒数を知る
echo $(( $(date +%s) - $(date -r FILE +%s) ))
これだけです。かんたんですね
コマンドの、細かいところを一つずつ見ていきます。
date コマンドでint秒数を表示する
まずは date コマンドで秒数を出す方法。これは現在のunix 秒が出ます。
date +%s
date コマンドでファイルの更新日付を取得する
次に、ファイルの更新時刻を date の引数として指定してあげる。
date -r FILE
組み合わせて、date コマンドでファイルの作成時をint秒で表示する
date -r FILE +%s
Bashで引き算をする
unix 秒が取れる なら、これを比較のために引き算して上げる必要があります。
echo $(( 100 -1 ))
これらをすべて組み合わせる
ファイルが作られてから何秒(何時間)経過しているかが計算できる
echo $(( $(date +%s) - $(date -r FILE +%s) ))
条件判断に使う。
ファイルが作成されてから1000秒経過してたら再起動するような条件分岐に使うことが出来ます。
(( $(( $(date +%s) - $(date -r FILE +%s) )) > 1000 )) && restart-server
ファイルA/BでAのほうが古ければなにかする。
(( $(( $(date +%s -r FILEA ) - $(date -r FILEB +%s) )) < 0 )) && echo old
記号 $( ( expr )) や ( ( expr )) などのbash の記号については
Bashの記号については、過去記事を参考にしてください
- bashのif文で数字の比較を評価条件ぱぱっとやる方法(C言語スタイル - それマグで!
- bashの似てて紛らわしいもの [[ / (( - それマグで!
- bashの似てて紛らわしいもの (( / $(( - それマグで!
参考資料
man bash