2009년 9월 10일 목요일

[Shell] 날짜로 파일 필터링 하기

쉘에서 작업을 하다보면 파일들을 날짜로 필터링 해야하는 경우가 생긴다.

 

예를 들면, 어떤 날짜와 다른 어떤 날짜 사이에 수정한 파일들만 가지고 와서 따로 백업을 해준다든지,

 

공동으로 작업하는 사람이 오늘 어떤 파일을 수정하였는지 보고 싶다든지 하는 경우가

 

파일을 날짜로 필터링해야 하는 경우이다.

 

 

그럴 때는 편법으로 이런 방법이 있다.

 

$ touch -t 200901010000 file1

$ touch -t 200902010000 file2

$ find / -newer file1 -a ! -newer file2 -ls  > result

 

여기서 이 명령어들을 이해하려면 몇 가지 알고 있어야 하는 것들이 있다.

 

1. touch 명령어
  1) 용도 : 파일의 시간을 원하는 시간으로 생성하거나 수정

  2) -t 옵션 : 수정하고자 하는 시간을 지정하는 옵션. -t 를 쓴 후 뒤에 원하는 시간을 적으면 됨.

 

2. find 명령어

  1) 용도 : 원하는 조건의 파일을 찾음

  2) -newer 옵션 : 옵션 뒤의 파일보다 최근에(이후에) 내용이 수정된 파일을 검색

  3) -a 옵션 : 'and' 연산자와 같은 의미

  4) ! : 'not' 연산자와 같은 의미

 

 

자 그렇다면, 이제 명령어를 이해해보자.

 

1. 첫 번째 줄을 보면 'file1'이라는 파일을 2009년 1월 1일 00시 00분 00초로 생성한다.

 

2. 두 번째 줄을 보면 1번과 마찬가지 방법으로 'file2'이라는 파일을 2009년 2월 1일 00시 00분 00초로 생성한다.

 

3. 세 번째 줄에 대해서 설명하면, find 명령어 다음의 '/'전체 범위에서 찾으라는 의미이고, file1이 수정된 시간보다 최근에, file2가 수정된 시간보다는 이전의 파일을 찾으라는 의미의 명령어 문장이다.

 

그러므로, 저 세 명령어 문장으로 수정된 시간이 원하는 범위 내에 있는 파일을 찾을 수 있다.

댓글 없음:

댓글 쓰기