본문 바로가기

Linux

find를 이용하여 특정 기간 내 파일 찾기

리눅스 파일시스템에서 특정한 날짜 이후의 파일을 찾거나, 특정 기간 내의 파일을 찾고 싶을 때가 있습니다..

안타깝게도 find에서 이런 옵션을 제공해주고 있진 않습니다. ( mtime, atime, ctime은 날짜 지정이 안됩니다.. )

그렇다고 불가능 한것은 아닙니다. find의 -newer 옵션을 적절히 사용하면 충분히 찾을 수 있죠 ㅎㅎ

"-newer 파일" 은 지정한 파일의 날짜보다 이후에 수정된 파일을 찾아주는 옵션입니다.


만약 2016년 5월 1일 이후로 생성된 파일을 찾길 원하면 아래와 같이 진행합니다.

1) touch -t 20160501 begin

> touch는 파일 생성 명령이고, t 옵션은 시간을 지정할 수 있습니다. (존재하는 파일이면 시간을 변경합니다)

  2016년 5월 1일의 날짜로 begin 파일이 생성되었습니다.

2) find / -newer begin -print

> begin 파일보다 이후에 수정된 파일을 검색합니다. 즉, 2016년 5월 1일 이후의 파일을 검색하게 되는것이죠.


find의 부정연산자를 사용하면 2016년 5월 1일 이전의 파일도 검색 가능합니다.

find / ! -newer begin -print

2016년 5월 1일 이후를 부정연산 했으니 2016년 5월 1일 이전이 됩니다.


이 두 방식을 섞으면 특정 기간 사이에 수정된 파일도 구할 수 있습니다.

2016년 5월 1일부터 2016년 5월 30일 사이에 수정된 파일을 검색하는 방법입니다.

2016년 5월 1일을 나타내는 begin 파일은 만들었으니, 2016년 5월 30일을 나타내는 end 파일을 만들겠습니다.


touch -t 20160530 end


이제 두 파일을 가지고 검색을 진행합니다.

find / -newer begin -a ! -newer end -print


이를 응용하여 특정 기간 내 파일의 개수를 구하거나, 삭제할 수도 있습니다.


개수 구하기 : find / -newer begin -a ! -newer end | wc -l

(wc 명령어는 텍스트의 단어나 라인의 개수를 세어주는 명령어 입니다. -l 옵션은 라인을 세어주며, -w 옵션은 단어의 개수를 세어줍니다.)


삭제하기 : find / -newer begin -a ! -newer end -exec rm -f {} \;


도움이 되셨기를..

'Linux' 카테고리의 다른 글

rpm 명령어 간단 정리  (0) 2016.10.03
백그라운드 포그라운드 전환, 백그라운드 종료  (0) 2016.10.02
find 명령어  (0) 2016.06.13