365일 이상 액세스하지 않은 파일을 반복적으로 찾으려고 합니다. stat를 사용하여 365일 이상 파일에 액세스하지 않았는지 확인할 수 있습니다. 이상하게도 파일에는 약 6개월 전에 변경된 것으로 표시되어 있지만 통계에 따르면 마지막 액세스는 1년이 넘었습니다.
그런 다음 find 명령을 사용하여 1년 넘게 액세스하지 않은 파일을 검색해 보았으나 확인한 파일이 목록에 없습니다.
skunkbad:/var/www/htdocs/newera$ stat ./index.html
File: './index.html'
Size: 31 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 3279283 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/skunkbad) Gid: ( 1001/ webdevs)
Access: 2018-01-08 16:22:58.271143975 -0800
Modify: 2017-09-21 14:01:36.950307771 -0700
Change: 2018-06-04 09:00:36.801632639 -0700
Birth: -
skunkbad:/var/www/htdocs/newera$ find . -atime +365 -type f -print
skunkbad:/var/www/htdocs/newera$
그렇다면 이 경우 index.html 파일 목록을 찾지 못하는 이유는 무엇입니까? 365일 이상 액세스하지 않은 파일을 재귀적으로 찾는 방법은 무엇입니까?
이 파일과 관련된 명령을 실행할 계획이기 때문에 질문하는 것입니다. 하지만 그것이 작동하는지 알아야 합니다. 90일의 예:
find -type f -atime +90 -exec touch -a {} +
답변1
이것매뉴얼find
-atime
-ctime
및 테스트에 대한 시간 계산 방법을 설명합니다 -mtime
.
-atime n
파일은 n*24시간 전에 마지막으로 액세스되었습니다. find가 파일에 마지막으로 액세스한 24시간 전을 계산할 때 모든 소수 부분은 무시되므로 일치하려면
-atime +1
파일에 적어도 2일 전에 액세스했어야 합니다.
두 번째 부분은 숫자 매개변수를 지정하는 방법입니다.
숫자 매개변수는 다음과 같이 지정할 수 있습니다.
+n은 n보다 크다.
-n은 n보다 작습니다.
n은 정확히 n이다.
-atime +365
따라서 을 지정하면 find
365일 이상 전에 액세스한 파일이 검색됩니다. 계산에서는 분수를 고려하지 않기 때문에 이는 파일이 최소 366일 전에 액세스된 경우에만 일치한다는 것을 의미합니다(일, 달력일이 아닌 366*24시간).
따라서 귀하의 경우 find . -atime +365
표시된 파일은 액세스 날짜로부터 366*24시간 이후에만 일치됩니다. 이 조건은 2019-01-09 16:22:58 이후에 true가 됩니다.