find
X 일 전보다 더 수정 된 파일을 찾을 수 있도록 지원하지만 find
특정 날짜 이후에 수정 된 모든 파일을 찾으려면 어떻게 해야합니까?
find
맨 페이지에서 다른 파일 시간과 비교하거나 생성 된 시간과 현재 시간의 차이점을 확인하기 위해 아무것도 찾을 수 없습니다 . 원하는 시간으로 파일을 만들고이를 수행하는 유일한 방법과 비교합니까?
find
X 일 전보다 더 수정 된 파일을 찾을 수 있도록 지원하지만 find
특정 날짜 이후에 수정 된 모든 파일을 찾으려면 어떻게 해야합니까?
find
맨 페이지에서 다른 파일 시간과 비교하거나 생성 된 시간과 현재 시간의 차이점을 확인하기 위해 아무것도 찾을 수 없습니다 . 원하는 시간으로 파일을 만들고이를 수행하는 유일한 방법과 비교합니까?
답변:
'최신 파일'만있는 경우이 해결 방법을 사용할 수 있습니다.
touch -t 201003160120 some_file
find . -newer some_file
남자 터치 :
-t STAMP
use [[CC]YY]MMDDhhmm[.ss] instead of current time
터치에이 옵션이 있다고 가정합니다 (광산은 터치 5.97입니다).
아니요, 날짜 / 시간 문자열을 사용할 수 있습니다.
보낸 사람 man find
:
-newerXY reference
현재 파일의 타임 스탬프를 참조와 비교합니다. 참조 인수는 일반적으로 파일 이름이며 타임 스탬프 중 하나가 비교에 사용되지만 절대 시간을 설명하는 문자열 일 수도 있습니다. X와 Y는 다른 문자의 자리 표시 자이며이 문자는 비교에 참조가 사용되는 방법에 속하는 시간을 선택합니다.a The access time of the file reference B The birth time of the file reference c The inode status change time of reference m The modification time of the file reference t reference is interpreted directly as a time
예:
find -newermt "mar 03, 2010" -ls
find -newermt yesterday -ls
find -newermt "mar 03, 2010 09:00" -not -newermt "mar 11, 2010" -ls
질문과 직접 관련이 없지만 여기에서 우연히 발견되는 일부에게는 흥미로울 수 있습니다.
find 명령은 필요한 날짜보다 오래된 파일을 찾기 위해 -older 매개 변수를 직접 지원하지 않지만 허용 된 응답 예제를 사용하여 부정 문을 사용할 수 있습니다.
touch -t 201003160120 some_file
find . ! -newer some_file
제공된 날짜보다 오래된 파일을 반환합니다 .
이런 스크립트를 사용할 수 있습니다
#!/bin/bash
if [ $# -ne 1 ];then
when="today"
else
when=` date -d "$1" +"%s" `
fi
now=`date +"%s"`
seconds=`echo "$when - $now" | bc`
minutes=`echo "$seconds / 60 " | bc `
find . -cmin $minutes -print
$ PATH에 "newerthan"으로 저장하고 실행 가능하게 만드십시오.
그런 다음 특정 날짜 이후에 수정 된 파일을 찾을 수 있습니다.
newerthan "2010-03-10"
또는
newerthan "last year"
또는
newerthan "yesterday"
그것은 당신이 원하는 것을해야합니다. 나는 그렇지 않으면 이것을 달성 할 수있는 방법이 내장되어 있다고 생각하지 않습니다.
bc
정수 연산을 위해, 배쉬는 작업을 수행 할 수 있습니다 ((seconds = when - now))
, 형식 인수를 위해 date
플러스가 있어야 date +%s
하지 수 있으며 일부 시스템date -d
find ! -newermt “<DATE>”
이처럼 :
find ! -newermt “jan 01 2015”
현재 디렉토리에 01-01-2015 이전의 파일이 표시됩니다.