2017-11-13 4 views
2

私は2つのディレクトリの間の時間差をチェックするbashスクリプトを探していますか?しかし、$ oldで私は20時09分24秒しか得られません。私はこれを "20:09:24.660157390"とします。 どのように時間を得ることができますか:分のみ。2つのディレクトリの間のBashスクリプトのチェック時間differnce

#!/bin/bash 



oldtime=$(stat -c %y /mnt/dir1| awk '{print $2}') 
ctime=$(date | awk '{print $4}') 


DIFF=$($oldtime-$ctime) 
if [ $DIFF > 600 ]; then 
    echo "This directory have more that 10 min" 
fi 

答えて

0

あなた、余分なサフィックスを剃り落とす が、それは本当にあなたを助けにはなりませんでした。 "20:09:24"は数字ではないため、 20:09:24 - $ctimeは動作しません。 他にもいくつかの構文エラーがあります。

日付の差を計算するには、 秒で作業する必要があります。

oldseconds=$(stat -c %Y /mnt/dir1) 
newseconds=$(date +%s) 

if (((newseconds - oldseconds)/60)); then 
    echo "This directory have more than 10 min" 
fi 
+0

追加する ")" "DIFF = $(((newseconds - oldseconds)/ 60)" の後、完璧な仕事TNK – user8826215

+0

をうまくスポッティング二表情で、私は上の改善user8826215 @。!それをチェックしてください。 – janos

0

この形式に変換するには、エポックタイムスタンプと日付を使用します。

$ date +%H:%M -d @`stat -c %Y /tmp/` 
19:19 

ただし、この形式を比較に使用することはお勧めしません。使用するUNIXではなく、タイムスタンプ:

if [ $(($(date +%s) - $(stat -c %Y /tmp))) -gt 600 ]; then 
    echo "This directory have more that 10 min" 
fi 
関連する問題