find mmin X 분 - Find가 시작된 시점 또는 Find가 파일을 찾은 시점이 X분이었습니까?

find mmin X 분 - Find가 시작된 시점 또는 Find가 파일을 찾은 시점이 X분이었습니까?

폴더에 약 10,000개의 파일이 있다고 가정해 보겠습니다. 저는 시간별 crontab을 사용하여 지난 60분 이내에 수정된 파일을 찾아 처리했습니다.

find -mmin -6001:00:00에 전화함

첫 번째 파일이 00:00:00에 수정되었고 01:00:00에 찾기를 통해 쉽게 찾을 수 있다고 가정합니다.

그러면 10,000번째 파일도 00:00:00에 수정되었다고 가정하자.

하지만01:10:00 입니다그리고 Find는 여전히 10000번째 파일에 도달하려고 합니다.

그러면 이제 70분 후 "find"는 00:00:00에 수정된 10,000번째 파일을 반환합니까?

답변1

GNU에서는 파일 등을 find평가하는 데 사용되는 참조 시간 은-mmin표현식을 구문 분석할 때 계산 및 저장됩니다.find이므로 시작 시 적용됩니다.

find이는 이러한 모든 시간 비교가 평가된 모든 파일에 대해 동일한 시간 참조, 즉 명령줄이 구문 분석된 시간을 사용한다는 것을 의미합니다.

답변2

GNU find를 가정하면 테스트하기 쉽습니다.

% mkdir foo; cd foo; touch a b
% find -mmin 1
.
./a
./b
% find -mmin 1 -exec sleep 120 \; -print 
.     # 2 minutes wait before this showed up
./a   # another 2 minutes before this showed up
./b   # and another 2 minutes for this one
% find -mmin 1
%

b따라서 마지막 수정이 실행 후 최소 4분이 지났더라도 여전히 일치합니다.findsleep 120a


-mminPOSIX가 아니기 때문에 구현에 따라 다르지만 위에서 본 동작이 예상됩니다.

답변3

두 터미널에서 차례로 다음 명령을 시도해 보십시오.

터미널 1:

find /path -mmin -0.017 -printf "$(date) %Tc %p\n" | grep '/path/to/some/file' 

NO2. 터미널:

touch -d " 0 seconds ago" /path/to/some/file

우리가 얻을 수 있는 결과는

Wed Jul 17 11:48:33 IST 2019 Wed 17 Jul 2019 11:48:34 AM IST /path/to/some/file

검색 결과 앞에 명령 시작 시간을 추가합니다. find명령 시작 시간 이후에 수정된 파일을 검색할 수 있음 을 나타냅니다 .

관련 정보