안녕하세요! 베하~!
여러분 리눅스를 사용할때 내가 찾고자 하는 파일을 눈으로 하나하나 찾아가면서 찾아보셨나요?
몇개안되는 파일을 찾기란 쉬운일이지만 찾고자 하는 파일이 아주 많다면 내가 원하는 파일을 찾기란 모래속의 진주찾기 처럼 어려울거에요!
이런 어려움을 쉽게 해결해줄수 있는 명령어가 바로 find라는 리눅스 명령어 입니다!
find는 리눅스에서 파일 및 디렉토리를 검색할 때 사용하는 명령어에요
$ find [경로] [옵션] [표현식]
$ find [PATH] [OPTION] [EXPRESSION]
위의 내용이 기본적인 find의 사용 방법이에요!
find 명령에는 몇 가지 옵션과 많은 수의 표현식(Expression)이 존재하는데, find 명령의 검색 결과가 지정된 표현식의 조합에 따라 결정되기 때문에 표현식은 매우 자주 사용되어 익혀둘 필요성이 있습니다.
find 옵션에는 아래와 같은 옵션들이 있습니다.
-H 심볼릭 링크를 따라가지 않고, Command Line Argument를 처리할때 예외.
-L 심볼릭 링크에 연결된 파일정보 사용.
-P 심볼릭 링크를 따라가지 않고, 링크 자체 정보를 사용
-Olevel 쿼리 최적화를 활성화한다. level : 0-3
-D [옵션] 디버깅 기능 사용.
help 디버깅 옵션을 설명.
exec -exec, -execdir, -ok, -okdir 관련 진단 정보를 표시.
opt 최적화와 관련된 진단 정보 표시.
rates 각 속성의 성공한 빈도를 나타냅니다.
tree 표현식 트리를 표시.
search 디렉토리 트리를 자세히 탐색.
stat stat(2), lstat(2)에 대한 추적을 호출한다.
다음으로 find 표현식(expression)도 알아봐야겠죠?
표현식 | 의미 |
-name | 주어진 이름의 파일이나 디렉터리를 찾는다 (가장 많이 쓰이는 옵션) $ find -name '*.txt' 현재 디렉터리 이하의 모든 디렉터리에서 .txt로 끝나는 파일 및 디렉터리를 싹 찾는다. |
-user | 지정한 사용자의 파일이나 디렉터리를 찾는다 (위에가 이름가지고 찾았다면 이거는 사용자 기준) |
-group | 지정한 그룹 소유의 파일이나 디렉터리를 찾는다 |
-uid | 지정한 UID소유의 파일이나 디렉터리를 찾는다 (아이디번호로 찾기) |
-gid | 지정한 UID 소유의 파일이나 디렉터리를 찾는다 (그룹번호로 찾기) |
-perm | 지정한 허가권 값을 갖는 파일이나 디렉터리를 찾는다 (permission의 약자) ex) -perm 755 : 퍼미션 값이 755로 설정된 파일이나 디렉터리 |
-type | 지정한 파일 유형을 찾는다. (파일만 찾고 싶을때 또는 디렉터리만 찾고 싶을 경우가 많다) d: 디렉터리, f: 일반 파일, l: 링크 파일, b: 블록 디바이스, c: 캐릭터 디바이스, p:파이프 디바이스, s:소켓 파일 (주로 -type f 옵션이나 -type d 옵션을 많이 쓴다) |
-atime n | access time 접근 시간 기준으로 찾는다. n : n일 이전에 접근한 파일 찾기 (exactly) +n : n보다 오래된 녀석들 기준 (greater), -n : n일부터 지금까지 즉 n일 내에 접근했던 파일들을 불러준다. (less) |
-ctime n | change time 수정 시간 기준으로 찾는다 |
-mtime n | modify time 변경 시간 기준으로 찾는다 |
-mmin n | mmin은 분이 기준 (mtime은 기준이 day) |
-empty | 빈 파일(파일의 크기가 0일 경우)이나 빈 디렉터리일 경우 출력 |
-exec | find로 파일을 찾고 바로 연계하여 어떠한 명령을 내릴 수 있는 옵션. 결과값은 {} 기호로 표시하고 \;로 끝내야 함. |
-ls | 'ls -l'과 같은 역할 |
-size n | n블록 길이의 파일을 찾는다. +n은 n블록보다 큰 파일을 찾으며 (greater) -n은 n블록보다 작은 파일을 찾는다 (less) 보통 nc라는 형태로 많이 사용되는데 n은 문자 길이의 파일을 의미하고, c는 character를 의미하여 1문자는 1바이트이므로 보통 바이트 단위로 인식해서 사용한다. |
-inum n | node번호가 n인 파일 찾기 |
-iname | 대소문자 구별 안하고 이름으로만 찾을 때 (insensitive의 약자) |
-maxdepth n | 검색 시 주어진 정수값 n만큼의 서브 디렉터리만 검색. (현재 내 폴더에서부터 n 깊이까지만) |
-mindepth n | maxdepth의 반대. |
-prune | 찾은 결과 중 디렉터리가 해당될 때 그 디렉터리 이름만 출력 (하위 디렉터리에 해당되는게 있어도 들어가서 찾지 않는다) |
-newer | 옵션 뒤에 적힌 파일보다 최근에 변경된 파일을 찾는다 ex) find -newer 'abc.c' abc파일보다 최근에 변경된 파일을 찾음 |
-cnewer | 앞의 newer가 내용 변경이라면 cnewer라면 파일 상태 |
2>/dev/null | 맨 뒤에 이 옵션을 붙이면 퍼미션 접근 불가한것은 화면에 출력하지 않는다. |
검색결과를 파일의 절대경로로 표시. 디폴트 옵션이다. |
그럼 지금부터 위의 정리한 명령어 옵션들을 바탕으로 간단한 예제 실전으로 한번 들어가 보겠습니다.
예를들어 현재 디렉토리 . 에서 찾고자 하는 파일을 검색해볼게요
$ find . -name "B*" # B로 시작하는 파일 검색. 결과 : ./Bespinglobal
$ find /user -name '*.txt' # /user 디렉토리에서 .txt 파일이름으로 끝나는 파일이름 검색
이런식으로 간단하게 활용해 볼수가 있겠죠?
또한 타입으로 옵션을 걸어서 파일을 찾을수도 있어요
option | type |
f | regular file |
d | directory |
c | character special |
b | block special |
l | symbolic link |
s | socket |
p | fifo |
$ find . -name btc -type f # btc라는 이름의 일반 파일 검색.
$ find . -name google -type d # google라는 이름의 디렉토리만 검색
이런식으로 활용이 가능하겠죠?
이렇게 간단하게 리눅스의 find 명령어에 대해서 알아봤어요!
사실 이방법말고도 활용하는 방법은 매우 무궁무진 합니다.
find명령어를 활용해서 시간을 아끼는 일잘러가 될수있도록 해요!
베빠~
'OS > Linux' 카테고리의 다른 글
리눅스 디렉토리 (0) | 2023.10.09 |
---|---|
리눅스 Log 파일 종류 (0) | 2023.09.15 |
외부 접속을 위한 ssh계정 생성 및 권한(sudo) (0) | 2023.08.18 |
[Liunx]LVM을 사용해 EBS 볼륨 용량 늘리기 (1) | 2023.07.19 |
[Linux]권한 이해하기 (0) | 2023.07.14 |
댓글