쉘 스크립트 사용 방법 파일의 마지막 변경 시간
문제
지난 3 분 이내에 특정 파일이 변경되었는지 확인하고 싶습니다. cp
성공했고 내가해야한다면 exit
또는 스크립트를 계속하십시오. 어떻게 할 수 있습니까?
감사
해결책
파일의 마지막 수정 시간을 stat
, 및 현재 날짜 date
. "시대의 이후 몇 초"에 둘 다 형식 문자열을 사용할 수 있습니다.
current=`date +%s`
last_modified=`stat -c "%Y" $file`
그런 다음 조건에 넣는 것은 매우 쉽습니다. 예를 들어:
if [ $(($current-$last_modified)) -gt 180 ]; then
echo "old";
else
echo "new";
fi
다른 팁
이 if 문의 구문은 특정 쉘에 따라 다르지만 날짜 명령은 그렇지 않습니다. 나는 bash를 사용한다. 필요에 따라 수정하십시오.
if [ $(( $(date +%s) - $(date +%s -r <file>) )) -le 180 ]; then
# was modified in last three minutes
else
# was not modified in last three minutes
fi
그만큼 +%s
날짜에 유닉스 시간을 출력하도록 지시합니다 (중요한 비트는 몇 초 만에 정수라는 것입니다). STAT를 사용 하여이 정보를 얻을 수도 있습니다 - 명령 stat -c %Y <file>
동등합니다. 사용하십시오 %Y
~ 아니다 %y
, 당신은 몇 초 만에 사용할 수있는 시간을 얻도록합니다.
STAT 명령은 마지막 수정 시간을 제공합니다.
stat -c %y <filename>
파일 이름이 지난 3 분 안에 수정 된 경우 파일 이름을 출력 할 수 있습니다.
find file1 -maxdepth 0 -mmin -3
파일 타임 스탬프 변경이 실제로 귀하가 성공적으로 복사 한 것을 의미하지는 않습니다.
파일을 손상 시키거나 파일 시스템이 공간이 부족한 경우
아마도 여전히 타임 스탬프 변경이 보일 것입니다 (확인해야합니다).
나는 당신의 요구 사항의 정확한 맥락을 얻지 못합니다.
당신이 해고되면 a cp
, 완료하고 반품 - 작동하는 동안 돌아 오지 않습니다.
그렇다면 (성공 종료 코드와 함께) 수익률이 성공의 좋은 지표가 아닌가?
당신은 어떻게 그리고 왜 당신은 a에서 부분적으로 나가겠습니까? cp
작업?
또는 배치입니다 cp
파일 목록을 통해 반복되는 스크립트 ...
일부 정교화가 도움이 될 것입니다.