'find'에 해당되는 글 2건

  1. : no such repository
  2. find를 이용해 파일찾기

: no such repository

cygwin은 이제 필수 설치 툴이 되어 버렸다.

업무를 하면서 자연 스럽게 cvs, cygwin, Eclipse 조합을 사용하게 되었는데,
Eclipse에서 cvs로 프로젝트를 내려 받은 것은 cygwin에서 cvs가 정상적으로 동작하지 않았다.

로긴 시도를 하면 아래와 같이 에러가 발생하는 것이다.
newtype@newtype-PC ~/test
$ cvs login
Logging in to :pserver:newtype@127.0.0.1:2401/project/test
CVS password:
: no such repository

에러 발생 이유에 대해 구글링을 해보니
CVS를 내려 받을때 생기는 세가지 파일 Entries, Root, Repository 들이
Unix 형식이 아닌, Windows 형식으로 생성되기 때문이란다.

cygwin에서 아래와 명령을 내리면 간단히 해결된다.
newtype@newtype-PC ~
$ find . \( -name Entries -o -name Root -o -name Repository \) -exec dos2unix {} \;

명령을 내리면 현재 디렉토리 및 모든 서브 디렉토리를 검색하여 CVS 관련 3가지 파일을 Unix 형식으로 바꾸어 준다. (정확히 말하자면 Windows 형식의 개행문자 "\r\n"을 Unix형식의 개행문자 "\n"으로 치환 해준다)

이제, cygwin cvs에서도 정상적으로 로긴이 되고,
Eclipse 에서도 아무런 부작용없이 정상적으로 cvs 관련 명령을 사용할 수 있다.

find를 이용해 파일찾기

find 명령을 사용하여 특정 조건에 맞는 파일을 디렉토리와 그 하위 디렉토리에서 찾을 수 있습니다. 찾은 파일에서 명령을 수행할 수 있습니다.

패턴이 일치하는 파일 찾기

find구문이 복잡하기는 하지만, HP-UX를 더욱 생산적으로 사용할 수 있습니다. 강력하고 융통성있는 명령입니다. 그러나, 디렉토리가 많을 경우에는 느리게 실행될 수 있습니다.

현재 디렉토리와 하위 디렉토리에서 d로 시작하는 모든 파일을 찾으려면 다음을 입력하십시오.

find(1)

$ find . -name 'd*'

점(.)은 find 가 현재 디렉토리와 하위 디렉토리를 찾도록 합니다. -name 선택사항 뒤에는 파일 이름이나 파일 이름 패턴(이 경우에는 d*)이 오는데, 패턴이 일치하는 모든 파일의 이름을 찾습니다. 이 보기에서 findd로 시작하는 모든 파일 이름을 찾습니다.

d*는 작은 따옴표 'd*'로 묶습니다 . find 명령에서 파일 이름 패턴을 사용할 경우에는 쉘이 정확하게 해석할 수 있도록 따옴표로 묶어야 합니다.

특정 파일보다 새로운 파일 찾기

특정 파일 이후에 수정된 모든 파일을 찾는다고 가정합시다. /home/leslie디렉토리와 그 하위 디렉토리에 있는 myfile보다 새로운 파일을 나타내려면, 다음을 입력하십시오.

$ find /home/leslie -newer myfile

이 보기는 /home/Lee 디렉토리와 그 하위 디렉토리에서 myfile이후에 수정된 모든 파일을 찾아서 화면에 모두 출력하라는 의미입니다. (파일이 마지막으로 수정된 일자와 시간을 알려면, ll명령을 사용하십시오.)

파일에서 명령 수행

find 명령을 받는 파일에서 다른 명령을 수행할 수 있습니다. 현재 디렉토리와 하위 디렉토리에서 .tmp라는 확장 이름을 가진 모든 파일을 삭제하려면, 다음을 입력하십시오.

$ find . -name '*.tmp' -exec rm {} \;

현재 디렉토리와 하위 디렉토리에서 .tmp로 끝나는 모든 파일을 찾아서 화면에 나타내고 그 파일을 모두 삭제합니다. -exec 선택사항은 다음 명령 (rm)을 실행합니다. { } 는 find 명령이 찾은 파일을 의미합니다. 명령 문자열을 끝내는 세미콜론 (;) 앞에
ESC 문자로 역빗금(\)을 붙입니다.

논리 연산자 사용

find 구문에 NOT, AND, OR같은 논리 연산자를 사용할 수 있습니다.

특정 형식에 일치하지 않는 파일을 찾으려면, 논리 연산자 NOT을 나타내는 !선택사항을 사용하십시오. 이 선택사항 뒤에는 파일 이름과 같이 파일 속성을 정의하는 선택사항을 사용하여야 합니다. 그러면, 지정된 속성이 없는 파일을 찾습니다.

예를 들면, /tmp에서 leslie없는 모든 파일을 찾으려면, 다음 명령을 사용합니다.

$ find /tmp \( ! -user leslie \)

쉘이 괄호를 특수 문자로 해석하지 않도록 ESC 문자인 \을 앞에 붙입니다.

두 개의 속성이 있는 파일을 찾으려면, 논리 연산자 AND인 expression -a
expression
선택사항을 사용하십시오. 예를 들어, /에서 Lee에 있는 모든 디렉토리를 찾으려면 다음 명령을 사용합니다.

$ find / \( -type d -a -user Lee \)

둘 중에서 한 개의 속성이 있는 파일을 찾으려면, 논리 연산자 OR인 expression -o expression 선택사항을 사용하십시오. 예를 들어, 일주일 동안 사용하지 않은 a.out이나 .o인 파일을 삭제하려면 다음 명령을 사용하십시오.

$find / \(-name a.out -o -name '*.o' \)-atime +7 -exec rm {}\;



특정 날짜 이후의 파일 찾기


$ touch -t 200802051720 bingo.tmp
$ find . -newer ./bingo.tmp -name "*.c"

touch를 이용 원하는 시간의 파일을 생성 한다. 생성한 파일보다 나중에 생성된 "*.c" 파일을 찾는다.



특정 날짜 사이에 파일 찾기


$ touch -t 200801010000 start.tmp
$ touch -t 200802050000 end.tmp
$ find . -newer start.tmp -a ! -newer end.tmp

touch를 이용 원하는 시간의 파일을 생성 한다. find의 -newer 옵션과 비교 연산자, 무정 연산자를 이용하여 생성한 임시파일 사이의 파일을 구한다.


특정 크기 이상의 파일 찾기


$ find . -size +10000k -exec ls -al {} \;

10M 이상의 파일을 화면에 찾아 출력 한다..


[출처]
http://docs.hp.com/ko/B2355-90167/ch02s18.html