[Linux/CentOS] 파일 위치 검색 - find, which, whereis, locate
System/OS - Linux

[Linux/CentOS] 파일 위치 검색 - find, which, whereis, locate

728x90

find

# find [경로] [옵션] [검색조건] [action]

옵션

-name : 이름이 ~인 파일 찾기

-user: 사용자가 ~인 파일 찾기

-newer:

-perm: 허가권이 ~인 파일 찾기

-size: 크기가 ~인 파일 찾기

 

action

-print (default) 기본값으로 따로 지정하지 않을 경우 실행; 찾은 내용을 출력 -exec + 명령 + \; 외부의 명령을 실행
-delete 찾은 내용을 삭제    

# find /home -name "*swp" -exec rm { } \;

>> "find /home -name "*swp""을 먼저 실행한 후 실행결과가 rm의 { }인자로 들어가 .swp 파일들이 rm 명령으로 실행되어 파일이 삭제된다. 이 때 -exec와 \;는 외부명령어의 시작과 끝을 표시한다.

 

# find . -name "*.txt" -print

>> ".txt"로 끝나는 파일을 home 디렉터리에서 시작해서 검색한다. 이 때 검색한 내용을 출력하도록 액션을 지정했다.


which

# which 실행파일이름

환경변수 PATH에 설정된 디렉터리의 바이너리 파일만 찾을 수 있다.

 

옵션

 

# which dir

>> dir 바이너리 파일을 절대경로명을 찾아준다.

 

# which x

>> PATH에 지정되어 있는 위의 디렉터리 내에 x 라는 바이너리 파일이 없기 때문에 없다는 메시지가 뜬다.


whereis

# whereis 실행파일이름

which 보다 보다 다양한 내용을 검색해준다.

 

옵션

# whereis dir

>> 찾고자 하는 실행파일이 있을 경우 실행 파일의 위치와 소스, man 페이지의 파일 위치까지 검색한다.

 

# whereis x

>> 찾고자 하는 실행파일이 없을 경우 '입력파일:'까지 출력되고 세부사항은 출력되지 않는다.

 


locate

# updatedb
# locate 파일이름

파일 목록 데이터베이스에서 파일을 검색한다.

다만, locate 명령어를 사용하기 전에는 updatedb 명령을 1회 실행해야 사용할 수 있다. updatedb 명령을 실행하기 전까지 설치된 실행 파일 중에서 입력받은 파일을 검색하기 때문에 만약 updatedb 명령 실행 이후에 설치된 실행파일이 있다면 한 번 더 updatedb 명령을 실행해줘야한다.

 

옵션

# locate dir

>> updatedb 명령을 실행하기 전이라 아직 파일 목록 데이터베이스가 업데이트 되어 있지 않기 때문에 찾을 수 없다는 메시지가 출력된다.

# updatedb

>> 파일 목록 데이터베이스에 현재 시스템에 설치된 실행파일들의 리스트를 업로드한다.

# locate dir

>> updatedb 명령을 실행한 후에 실행파일이 업데이트되어 dir이 포함된 파일들이 모두 검색된다.

 

 

 

참고도서: 이것이 리눅스다 with RedHat CentOS 8 (개정판) _우재남 (한빛미디어)

SMALL