Bash 스크립트를 사용하여 두 타임스탬프 사이에 수정된 파일 찾기

Bash 스크립트를 사용하여 두 타임스탬프 사이에 수정된 파일 찾기

특정 시간 간격 내에 변경된 파일을 찾고 싶습니다. 내가 사용하는 스크립트는

#!/bin/bash
find ./ -type f -newermt '2018-05-24 09:26:50' ! -newermt '2018-05-24 09:26:52'

내 폴더에는 다음 파일이 포함되어 있습니다.

-rwxr-xr-x 1 root root  219 May 24 09:26 sql_runner.sh
-rwxr-xr-x 1 root root 3.6K May 24 09:26 script.sh
-rwxr-xr-x 1 root root 3.1K May 24 09:26 script_ide.sh
-rwxr-xr-x 1 root root 8.8K May 24 09:26 q
-rw-r--r-- 1 root root   17 May 24 09:26 program.txt
-rw-r--r-- 1 root root  346 May 24 09:26 main.c
drwx------ 2 root root  12K May 24 09:26 lost+found
-rwxr-xr-x 1 root root 1.7K May 24 09:26 javaRunner.sh
-rw-r--r-- 1 root root    0 May 24 09:26 inputParams
-rw-r--r-- 1 root root    2 May 24 09:26 inputForInfinite
-rw-r--r-- 1 root root   14 May 24 09:26 inputFile

위 스크립트를 실행하면 아무것도 반환되지 않지만 스크립트를 다음과 같이 변경하면

#!/bin/bash
find ./ -type f -newermt '2018-05-24 09:26:49' ! -newermt '2018-05-24 09:26:52'

즉, 시간을 1초(에서 까지 2018-05-24 09:26:50) 줄이면 2018-05-24 09:26:49원하는 결과를 얻을 수 있습니다.

./inputFile
./main.c
./sql_runner.sh
./script_ide.sh
./q
./inputForInfinite
./javaRunner.sh
./program.txt
./inputParams
./script.sh

date -r ./sql_runner.shGives의 출력은 다음과 같기 때문에 왜 이런 동작이 발생합니까 ?

Thu May 24 09:26:50 UTC 2018

원하는 동작을 얻으려면 이 스크립트에서 무엇을 변경해야 합니까?

답변1

sql_runner.sh분명히 (및 기타 파일)의 타임스탬프는 09:26:49.000에서 09:26:49.999 사이입니다. 따라서...49보다 최신이지만...50보다 최신은 아닙니다. 시간과 경쟁 하고 싶다면 ,GNU 찾기타임스탬프를 나노초와 비교합니다.

/* Returns ts1 - ts2 */
static double ts_difference (struct timespec ts1,
                 struct timespec ts2)
{
  double d =  difftime (ts1.tv_sec, ts2.tv_sec)
    + (1.0e-9 * (ts1.tv_nsec - ts2.tv_nsec));
  return d;
}


static int
compare_ts (struct timespec ts1,
        struct timespec ts2)
{
  if ((ts1.tv_sec == ts2.tv_sec) &&
      (ts1.tv_nsec == ts2.tv_nsec))
    {
      return 0;
    }
  else
    {
      double diff = ts_difference (ts1, ts2);
      return diff < 0.0 ? -1 : +1;
    }
}

당신은 가깝습니다구문을 사용하면 다른 콜론이 아닌 소수점 이하 초를 추가할 수 있습니다.

find ./ -type f -newermt '2018-05-24 09:26:50.200' ...

관련 정보