ls 및 stat 사용 [닫기]

ls 및 stat 사용 [닫기]

이 스크립트를 작성했지만 출력이 올바르지 않습니다. 통계를 계산할 수 없습니다. 해당 파일이나 디렉터리가 없습니다. 파일 형식은 Living Room-20180418-0955588134.jpg 입니다.

어떤 도움이라도 대단히 감사하겠습니다.

#!/bin/sh

LASTFILE=$(cd /volume1/surveillance/@Snapshot && ls *.jpg  | tail -1)



# Input file

# How many seconds before file is deemed "older"
OLDTIME=3600
# Get current and file times
CURTIME=$(date +%s)
FILETIME=$(stat "$LASTFILE" -c %Y)
TIMEDIFF=$(expr $CURTIME - $FILETIME)

# Check if file older
if [ $TIMEDIFF -gt $OLDTIME ]; then

echo "No Movement Dectected in Last Hour" ;
   exit 1
fi

답변1

GNU find또는 호환 제품을 사용하세요.

if
  ! find /volume1/surveillance/@Snapshot -name '*.jpg' -mmin -60 |
    grep -q '^'
then
  echo No movement detected in the last hour
  exit 1
fi

또는 다음을 사용하여 zsh:

last_hour=(/volume1/surveillance/@Snapshot/*.jpg(Nmh-1))
if (($#last_hour = 0)); then
  echo No movement detected in the last hour
  exit 1
fi

답변2

그 이유는 "stat"가 "/volume1/surveillance/@Snapshot/" 전체 경로를 볼 수 없기 때문입니다. 파일 이름만 보입니다. 그래서 스크립트를 수정해야 합니다.

#!/bin/sh
DIR=/volume1/surveillance/@Snapshot
LASTFILE=$(cd $DIR && ls *.jpg  | tail -1)

# Input file

# How many seconds before file is deemed "older"
OLDTIME=3600
# Get current and file times
CURTIME=$(date +%s)
FILETIME=$(stat $DIR/$LASTFILE -c %Y)
TIMEDIFF=$(expr $CURTIME - $FILETIME)

# Check if file older
if [ $TIMEDIFF -gt $OLDTIME ]; then

 echo "No Movement Dectected in Last Hour" ;
 exit 1
fi

관련 정보