찾기 명령이 잘못된 데이터를 반환함

찾기 명령이 잘못된 데이터를 반환함

이 명령을 사용하여 마지막 날에 수정된(또는 생성된) 모든 파일을 나열합니다.

find ./ -mtime 1 -ls

그런데 방금 명령어를 실행했더니(5월 2일 19시 38분) 4월 30일부터 계속 파일이 반환되더군요.

왜 이런 일이 발생하는지 알려주거나 지난 24시간 동안 수정되거나 생성된 파일을 찾을 수 있는 더 나은 명령을 줄 수 있는 사람이 있나요?

답변1

find며칠 전에 수정된 파일 의 경우 소수 부분을 무시하므로 -mmin대신 사용하는 것이 좋습니다. -mtime따라서 23시간인 1일도 1일로 간주됩니다.

에서 man find:

-atime n
         File was last accessed n*24 hours ago.  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.

귀하의 경우 다음은 지난 24시간(예: 1440분) 동안 수정된 파일을 보여줍니다.

find . -mmin -1440 -ls 

답변2

-mtime N파일의 연령을 나타냅니다.하루 안에 만족하세요.질소<질소+1. 즉, 가장 최근에 수정된 파일을 선택합니다.-mtime N질소그리고질소+1일 전. 예를 들어 -mtime 11~2일 전에 수정된 파일을 선택합니다. 마지막 날(예: 지난 24시간 이내)에 수정된 파일을 선택하려면 를 사용합니다 -mtime 0.

-mtime -N파일의 연령을 나타냅니다.풀다<질소즉, 수정된 파일이 다음보다 적습니다.질소며칠 전. 덜 직관적이며 파일의 나이를 의미합니다.-mtime +N풀다질소+1≤, 즉 최소한 수정된 파일질소+1일 전.

이러한 규칙을 기억하기 어렵다면 대신 참조 문서를 사용하세요.

touch -d '1 day ago' cutoff
find . -newer cutoff

("1일 전" 구문에는 GNU가 필요합니다 touch.)

관련 정보