명령어를 검색할 때 매개변수 값이 혼동됩니다.

명령어를 검색할 때 매개변수 값이 혼동됩니다.

~에서찾다수동:

mtime n
File's data was last modified n*24 hours ago.  

그래서

find . -mtime 0

n*24시간 전, 즉 0*24시간 전, 즉 0시간 전에 수정된 콘텐츠를 찾아야 합니다. 그러나 그것은 진실이 아니다. 24시간 전과 현재 순간 사이에 수정된 콘텐츠를 찾을 것 같아요.

그 다음에

find . -mtime 0

동일한

find . -mtime -1

내가 맞나요? 지침에 오류가 있습니까?

내 생각은 다음과 같습니다(편집됨).

-mtime -1, file was modified less than 24 hours ago
-mtime -0, file was modified less than 24 hours ago
-mtime 1, file was modified **exactly** 24 hours ago

-mtime +1, file was modified more than 24 hours ago
-mtime +0, file was modified more than 24 hours ago.
-mtime 0, file was modified **exactly** 24 hours ago

find . -mtime 024시간 전에 수정하지 않은 파일이 계속해서 나타나기 때문에 아직 파악하지 못한 것 같습니다.

편집 2:

글쎄, 나는 아무것도 이해하지 못하지만 이것이 올바른 치트 시트라고 생각합니다.

find . -mtime +0 # find files modified greater than 24 hours ago
find . -mtime 0 # find files modified between now and 1 day ago
# (i.e., in the past 24 hours only)
find . -mtime -1 # find files modified less than 1 day ago (SAME AS -mtime 0)
find . -mtime 1 # find files modified between 24 and 48 hours ago
find . -mtime +1 # find files modified more than 48 hours ago

답변1

이는 실증적인 조사를 통해 이해하기 매우 쉽습니다. 5개의 빈 파일을 설정하고 수정 시간을 다음 값으로 설정해 보겠습니다.

$ touch -d '50 hours ago' a
$ touch -d '40 hours ago' b
$ touch -d '30 hours ago' c
$ touch -d '20 hours ago' d
$ touch -d '10 hours ago' e

findatime/mtime/ctime 테스트 결과는 명령이 실행된 시간부터 24시간 동안의 기간을 계산하여 계산됩니다. 이 계산에서는 소수 부분이 무시됩니다.

따라서 이 값을 나누고 해당하는 24시간 기간 수를 찾아보겠습니다.

a: 50/24 = 2
b: 40/24 = 1
c: 30/24 = 1
d: 20/24 = 0
e: 10/24 = 0

다음으로 매개변수를 지정하는 방법을 살펴보겠습니다. n(완전히 일치), +n(보다 큼), -n(보다 작음) 의 세 가지 형식이 허용됩니다 find.

다음으로, find이 파일에 대해 몇 가지 명령을 실행하고 결과를 살펴보겠습니다.

  • find . -mtime 0파일 d 및 e(값 0)를 반환합니다.
  • find . -mtime 1파일 b 및 c(값 1)를 반환합니다.

정확한 일치(n)를 지정하더라도 여전히 수정 시간 범위가 표시됩니다. 이는 계산에서 소수 부분이 무시되기 때문입니다.

다음 명령 세트로 넘어가겠습니다.

  • find . -mtime +0파일 a, b, c(값 1과 2)를 반환합니다.
  • find . -mtime +1파일 a(값 2)만 반환됩니다.

find이러한 계산에서는 소수 부분이 무시되므로 0 다음의 값은 1만 될 수 있습니다 . +1에도 동일하게 적용됩니다. 다음 일치는 2만 가능합니다. 이는 다소 직관적이지 않기 때문에 매뉴얼에도 "-atime +1과 일치하려면 최소한 이틀 전에 파일에 액세스해야 합니다"라는 핵심 사항으로 명시되어 있습니다.

마지막으로 "미만" 범위를 살펴보겠습니다.

  • find . -mtime -0파일이 반환되지 않습니다.
  • find . -mtime -1파일 d와 e를 반환합니다.

-0검사는 향후 수정 타임스탬프와 파일을 일치시킵니다. 이는 일반적인 시나리오가 아니므로 이 실험에는 포함되지 않았습니다. 검사는 -10 값(즉, 1 다음으로 작은 값)을 갖는 파일을 반환합니다. 이들은 d와 e입니다.

이를 통해 이러한 테스트에 대한 혼란이 해소되기를 바랍니다. 결론은 명령줄에 단일 정수를 지정하더라도 여전히 atime/ctime/mtime 테스트 범위를 참조한다는 것입니다.

관련 정보