OSX에서 find 명령의 날짜 범위를 어떻게 지정합니까?

OSX에서 find 명령의 날짜 범위를 어떻게 지정합니까?

날짜 범위에서 분까지의 파일을 찾아야 합니다. 두 번째 방법을 아는 것이 언젠가는 도움이 될 것이라고 생각합니다. 아무리 해도. 나는 -newermt와 -not -newermt를 사용하는 방법을 배웠습니다. 그러나 이를 결합하면 올바른 결과를 얻을 수 없는 것 같습니다. find를 사용하는 Linux 예제를 찾았지만 스위치가 OSX에서 작동하는 것 같지 않습니다. 다음 파일 목록을 참조하세요.

#$ ls -l
total 32
-rw-r--r--  1 testuser  staff  1024 Oct 26 20:12 test1.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 19:00 test1_old.swc
-rw-r--r--  1 testuser  staff  1024 Oct 26 20:12 test2.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 19:00 test2_old.swc
-rw-r--r--  1 testuser  staff  1024 Oct 26 20:12 test3.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 19:00 test3_old.swc
-rw-r--r--  1 testuser  staff  1024 Oct 26 20:12 test4.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 19:00 test4_old.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 20:11 test5.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 20:13 test6.swc
-rw-r--r--  1 testuser  staff     0 Oct 26 19:00 timestamp.tmp

다음 명령은 test1.swc부터 test4.swc까지 반환할 것으로 예상됩니다. 그러나 test6.swc를 반환했다는 점에 유의하세요.

#$ find . -newermt '2010-10-26 20:11' -a -not -newermt '2010-10-26 20:13'
./test1.swc
./test2.swc
./test3.swc
./test4.swc
./test6.swc

-not 조건의 분이 꺼져 있다고 생각하여 다음을 시도했지만 아무것도 반환하지 않았습니다.

#$ find . -newermt '2010-10-26 20:11' -a -not -newermt '2010-10-26 20:12'
#$ 

-newermt 스위치와 -not -newermt 스위치를 제대로 결합하지 못했다는 결론을 내렸습니다. 이 문제를 해결하는 방법에 대한 조언이 있습니까?

답변1

구문이 올바른 것 같습니다. 이 파일들을 어떻게 만들었나요? 날짜를 업데이트하기 위해 터치를 사용했을 때 잘못된 반환을 보았습니다.

BSD에서는 -a가 필요하지 않으며 !를 사용하는 경향이 있습니다. -not 대신 (개인적 취향)

명령 도움말을 검색할 때 제가 사용하는 몇 가지 차이점이 있기 때문에 BSD를 검색하고 싶다는 것을 기억하세요.FreeBSD 매뉴얼 페이지

파일에는 분 이상의 내용이 있으므로 첫 번째 초를 원한다면 표시해야 합니다. 나는 당신과 같은 구조를 설정하고 몇 초 동안 :00을 추가했을 때 당신이 얻은 것과 동일한 결과를 얻을 수 있었지만 말이되지 않았습니다. 그래서 ls -lT를 수행하고 파일에서 초를 볼 수 있었고 find 명령을 실행하여 기본적으로 ! 또는 -not은 초를 59로 설정하여 전체 분을 포함합니다.

#$ 찾기 . -newermt "2010-10-26 20:11:00" ! -newermt "2010-10-26 20:13:00"

관련 정보