
6개월 이상 손대지 않은 파일을 모두 찾으려고 합니다. 이 명령을 실행했지만 6개월 동안 편집된 모든 파일만 표시됩니다.
find . -type f -mtime 183 -exec ls -latr {} \;
이것을 6개월 이상으로 만들려면 어떻게 해야 합니까?
답변1
-mtime 183
다음 24시간 기간으로 반올림된 기간이 183인 파일에 대한 것입니다. 따라서 기간은 182*24*3600초(제외)에서 183*24*3600초(포함) 사이로 구성됩니다(여기서 초는 Unix 초, 즉, 초의 고정 기간 ISO 정의가 아닌 지구의 날의 86400 번째 부분 인 가변 기간을 갖습니다 . 따라서 모든 날은 86400초이므로 윤초를 고려할 필요가 없습니다.
를 사용하면 -mtime +183
다음 24시간 기간으로 반올림된 기간이 183보다 엄격하게 큰 파일을 가져오므로 해당 기간은 엄격히 183*24*3600초보다 큽니다.
24시간이 반드시 24시간과 동일하지는 않습니다.낮일부 지역의 일광 절약 시간제 전환으로 인해.
일부 find
구현(FreeBSD, GNU) 에서는 ! -newermt '6 months ago'
. 수정 시간을 인수로 주어진 시간과 mt
비교합니다 .m
t
그러면 6개월 전 같은 날짜, 같은 시간 이전에 수정된 파일이 제공되지만 GNU의 경우 find
(FreeBSD와 반대로) DST 조정(DST가 적용되는 시간대에서)을 수행하지 않습니다. 마치 UTC 시간대에 있는 것처럼 정보를 제공합니다. 지금이 2016-07-01 13:00(여름 시간)이면 FreeBSD는 find
2016-01-01 13:00(겨울 시간) 이전에 마지막으로 수정된 파일을 보고하는 반면, GNU는 find
2016-01-01 12 이전에 마지막으로 수정된 파일을 보고합니다. :00(겨울철). 매월 29일, 30일 또는 31일에 호출되고 6개월 전 달에는 해당 날짜가 없는 경우에도 변동이 있을 수 있습니다.
답변2
+
일 값 앞에 를 추가합니다 . 매뉴얼 페이지에서:
Numeric arguments can be specified as
+n for greater than n,
-n for less than n,
n for exactly n.
그리고
... When find figures out
how many 24-hour periods ago the file was last accessed, any
fractional part is ignored, so to match -atime +1, a file has to
have been accessed at least two days ago.
이는 테스트를 의미하지만 , 및 테스트 atime
에서도 동일합니다 .mtime
ctime