2018. 7. 16. 17:08

리눅스 find 명령어 사용법

find

find 명령만 입력하면 현재 디렉토리(.)에 있는 파일을 찾는다. (하위 디렉토리, 숨겨진 파일도 표시)

find /etc

특정 디렉토리(여기서는 /etc)에 있는 파일을 검색한다.


리눅스 find 명령어 사용법

find /etc -name "ssh*"

찾을 파일이름을 지정할 수 있다.


리눅스 find 명령어 옵션 정리 및 활용법

find . -name "test*"

-name 옵션으로 찾을 파일 이름을 지정한다.

find . -name "test*" -type d

디렉토리만 찾을려면 -type d 옵션을 사용한다.

리눅스 find 명령어 size 옵션 사용법

sudo find / -size +10M -exec ls -lh {} \;

-size 옵션으로 파일 사이즈를 지정할 수 있다.

(디렉토리 권한 때문에 앞에 sudo를 사용했다.)

(-exec에 대한 내용은 아래를 참조)


find . -empty 

빈 파일을 찾기위해 -empty 옵션을 사용한다.

find /etc -maxdepth 2 -name 'x*'

-maxdepth 옵션으로 서브 디렉토리 검색 깊이를 지정한다.

find . -newer game.py

-newer 옵션 뒤에 적힌 파일보다 최근에 변경된 파일을 검색한다.

리눅스 find 명령어 exec 옵션 사용법

find . -empty -exec ls -l {} \;

find . -empty -exec rm {} \;

-exec 옵션 뒤에 명령어를 입력하여 검색한 파일로 부가적인 작업을 수행할 수 있다.

(검색된 파일이 {} 위치에 입력되어 처리된다.)


리눅스 find 명령어 오류 메시지 처리

find / -name "test*" 2>/dev/null

'Permission denied'와 같은 오류를 무시하기 위해 리다이렉션을 사용할 수 있다.

(sudo 명령을 사용할 수 없는 경우에 효과적이다.)


#################################################################


파일 찾기 (파일명 검색)


현재 디렉토리에서, pl 확장자를 가진 모든 파일 찾기

find -name '*.pl'


(현재 디렉토리 밑의 하위 디렉토리까지 다 찾습니다.)


루트에서부터, 즉 전체 하드에서, pl 확장자를 가진 모든 파일 찾기

find / -name '*.pl'



전체 하드 디스크에서, 파일명이 ab 로 시작하는 모든 파일 찾기

find / -name 'ab*'



전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기

find / -name '.bash*'



전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
+ ls 명령 형식으로 출력

find / -name '.bash*' -ls


뒤에 -ls 라는 옵션을 붙이면 됩니다.


디렉토리명 찾기


전체 하드 디스크에서, 디렉토리 이름이 et 로 시작하는 모든 디렉토리 찾기

find / -name 'et*' -type d



주의! 옵션 순서를 바꾸면 에러가 납니다.