!["find .-daystart -mtime"과 "find .-mtime"의 차이점은 무엇입니까?](https://linux55.com/image/208026/%22find%20.-daystart%20-mtime%22%EA%B3%BC%20%22find%20.-mtime%22%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음의 차이점은 무엇입니까 -
find . -daystart -mtime +5
그리고
find . -mtime +5
테스트해 보니 동일한 결과가 나왔습니다.
그것을 사용하면 어떤 이점이 있습니까 -daystart
? 이분야 초보인데 친절한 조언 부탁드립니다.
답변1
기준점이 현재 시간( find
런타임)이 아닌 자정이 되도록 파일 수명을 비교하는 방식을 변경합니다.
예를 들어 지금은 2022년 7월 8일 오전 11시 12분경입니다. 다음 파일을 고려하십시오.
$ touch -d '2022-07-08 09:00' this_morning # 2 h old
$ touch -d '2022-07-07 23:55' yesterday_before_midnight # 11 h old
$ touch -d '2022-07-07 09:00' yesterday_morning # 1 d + 2 h old
-mtime 0
하루 종일 문서를 작성하지 않습니다. 기본적으로 현재 시간과 비교하여 지난 24시간의 기간을 제공합니다.
$ find . -type f -mtime 0
./yesterday_before_midnight
./this_morning
이를 통해 -daystart
달력 날짜를 보는 것과 비슷합니다. -daystart -mtime 0
"0일 전" 파일이 주어지면, 즉 오늘부터 시작됩니다:
$ find . -type f -daystart -mtime 0
./this_morning
마찬가지로, 최소한 "1일"(즉, 24시간 이상)이 지난 파일의 경우:
$ find . -mtime +0
./yesterday_morning
그리고 어제 또는 그 이전에:
$ find . -daystart -mtime +0
./yesterday_before_midnight
./yesterday_morning
이를 확인하는 또 다른 방법은 -daystart
파일 타임스탬프와 현재 시간 사이의 자정 수를 계산하는 것입니다.
( ) 수정자는 "엄격히 큼"("보다 작음")을 의미하며 /에 대한 규칙은 find가 파일 수명의 24시간 기간 수를 계산하고 모든 소수 부분을 제거한다는 것입니다. 따라서 궁극적인 의미는 '적어도 0'이 아니라 '적어도 하나'입니다.+N
-N
-atime
-mtime
+0
POSIX 설명은 -mtime
다음과 같습니다.
-m시간 N
파일 수정 시간을 초기화 시간에서 빼고 86400으로 나눈 경우(나머지는 모두 폐기됨) 기본 용어는 true로 평가되어야 합니다.N.
따라서 기본 타임라인( 제외 -daystart
)은 다음과 같습니다.
...-|-- age 2 days --|-- age 1 day ---|-- age 0 days --|
^ ^ ^ ^
72 h ago 48 h ago 24 h ago current time
이를 통해 -daystart
기준점은 자정으로 이동합니다.
...-|-- age 2 days --|-- age 1 day ---|-- age 0 days --|
^ ^ ^ ^
start of start of last midnight / next midnight /
the day before yesterday start of today end of today
(미래에 파일에 대한 음수 시간을 얻을 수 있지만 빼기 기호는 다른 의미를 갖기 때문에 직접 지정할 수는 없습니다. 하지만 이를 사용할 수 있으며 -mtime -0
나중에 수정된 파일을 제공 -daystart -mtime -0
하거나 내일 또는 나중에 수정된 파일을 제공하세요.)
공교롭게도 / 와 함께 작업하면 -daystart
하루가 끝날 때부터 계산이 시작됩니다.-amin
-mmin
$ touch -d '12:00' today_1200.txt # noon today
$ touch -d '23:00' today_2300.txt # late evening today
$ find . -type f -daystart -mmin +120
./today_1200.txt
$ find . -type f -daystart -mmin -120
./today_2300.txt
$ find . -type f -daystart -mmin -$((13*60))
./today_2300.txt
./today_1200.txt
(23:00은 하루 종료로부터 120분 이내이고, 12:00은 하루 종료로부터 120분 이상입니다. 둘 다 하루 종료로부터 13*60분 이내입니다.)
이것매뉴얼 페이지물론 -daystart
:
시간은 24시간 전이 아닌 오늘부터 측정됩니다.
이것은 다소 이상한 표현처럼 들립니다. 그들은 하루 종일 기한을 제시하지만 표현을 보면 제로 기준점을 나타내는 것처럼 들립니다. 기본적으로 이 시간은 현재 시간이 되며 -daystart
위에서 언급하고 표시된 대로 오늘의 끝으로 이동됩니다. 그래서 내 생각에는 "현재 시간이 아닌 오늘의 끝부터 시간을 측정한다"는 표현이 더 명확합니다.