메뉴 건너뛰기

리눅스 리눅스 - 파일 찾기 명령어

미르 2014.04.24 16:01 조회 수 : 435

간혹 리눅스에서 파일을 찾고자할 때 애를 먹을 경우가 있다.

보통 리눅스 명령어는 아래와 같이 찾으면 되지만, 

 $ whereis [명령어]

 

(참고로 위의 경우는 명령어의 경로를 보여준다. 간혹 서버를 만지다가 path가 망가지는 경우가 있는데, 이때 보통 사용하던 명령어가 path에 없어서 사용할 수 없는 경우가 있다.)

 

그런데 파일은 어떻게 찾더라...?

자~ 아래와 같이 해보자. 

(참고로 아래 명령어로 폴더도 찾을 수 있다.)

 

 $ find [찾을 시작위치] -name '[파일 이름]'

 

[찾을 시작위치]는 파일을 찾고자하는 시작 위치를 말하며 이때 해당 위치의 하위 폴더를 모두 찾는다.

현재 디렉토리로 부터 찾으려면 [찾을 시작위치]를 생략하면된다.

 

[파일 이름]은 wildcard character인 *를 사용할 수 있다.

 

예를 들어 보자.

1. 현재 디렉토리로부터 하위 디렉토리를 포함하여 main.c 파일을 찾는다.

 $ find -name 'main.c'

 

2. 현재 디렉토리로부터 하위 디렉토리를 포함하여 simul이라는 단어가 파일 제목에 포함된 파일을 찾는다. (wildcard character 사용)

 $ find -name '*simul*'

 

3. 현재 디렉토리로부터 하위 디렉토리를 포함하여 확장자가 pdf인 파일을 찾기.

 $ find -name '*.pdf'

 

위와 같이 wildcard character를 적절히 이용하면 되겠다.

 

4. 전체 폴더에서 main.c 찾기

전체 폴더에서 찾으려면 [찾을 시작위치]를 /로 하면 되겠다.

물론 제대로 다 찾으려면 수퍼 유저로 로긴 해야한다.

 $ find / -name 'main.c'

 

기본적인, 그리고 가장 많이 쓸법한 사항은 위와 같고 혹시 더 궁금한 사항은 아래와 같이 쳐보면 알 수 있다.

 $ find --help

 

5. 특정 문자 (열)을 포함한 파일 찾기 [1]

 $ find [찾을 위치] type f -exec egrep -i "[찾을 문자(열)" /dev/null {} \;

 

예:

find ./ type f -exec egrep -i "home2" /dev/null {} \;

 

-> 모든 위치에서 (./) home2라는 단어가 포함된 파일을 찾는다.