안녕하세요. 썬구루입니다. 이번 게시물에서는 리눅스 파일 검색에 대해 알아보도록 하겠습니다. 텍스트 파일 내에 검색을 위해서는 grep, egrep, fgrep, sed, awk 같은 명령을 사용할 수 있는데 디렉터리 계층 내에 파일 이름, 유형, 파일 크기, 소유자, 시간 정보 등의 조건에 맞는 파일을 찾기 위해서는 find 명령을 사용할 수 있습니다. 이 명령에 대해 알아보도록 하겠습니다.
■ find 명령
리눅스 디렉터리 계층 내에 조건에 맞는 파일을 검색하기 위해 사용되는 명령이다.
1). 명령 형식
find [Path] [Expression] [Action]
2). Expression
이는 옵션으로 구성되어 있는데 파일을 검색하기 위한 조건을 나타낸다. 그리고 여러 가지 조건을 설정할 수 있다.
Expression
|
내 용
|
-name FILENAME
|
파일 이름으로 검색 |
-type FILETYPE
|
파일 유형(Type)으로 검색 [ f, d, l, c, b, s, p ] |
-perm PERMISSION
|
파일 권한으로 검색 |
-user USERNAME
|
파일 소유자로 검색 |
-group GROUPNAME
|
파일 그룹으로 검색 |
-size n[bcwkMG]
|
파일 크기로 검색 [ b : 512-byte, c : bytes, w : 2-byte words, k : kilobytes, M : Megabytes, G : Gigabytes ] |
-mtime DAY_NUM
|
파일 데이터 수정 시간으로 검색 |
-ctime DAY_NUM
|
파일 속성이 변경된 시간으로 검색 |
-inum INODE_NUM
|
파일 Inode 번호를 가지고 검색 |
-a 와 -o 옵션을 사용하여 여러 expression을 사용하여 파일을 검색할 수 있다. -a는 AND를 -o는 OR을 뜻한다.
3). 예제
아래는 /etc 디렉터리에 init.d 이름을 가지는 파일을 찾고 파일의 상세 정보(-ls)를 확인하기 위해 find 명령을 사용하였다. 그리고 /tmp 디렉터리에 user1 사용자가 소유한 파일을 검색하였다.
아래는 파일 크기를 가지고 파일을 검색하였다. '2> /dev/null' 뜻은 표준 오류를 /dev/null로 보내라는 뜻이다. 만약 이 내용이 궁금하다면 '2> /dev/null'을 빼고 실행시켜 보자. 그러면 무엇을 의미하는지 금방 알 수 있다. 그리고 같은 inode 값을 가지는 파일을 검색하기 위해 inum 옵션을 사용하였다.
-mtime은 파일의 데이터 수정시간(Data Block 수정)을 가지고 검색하는 것이다. -ctime은 파일의 속성 변경(Inode 변경)을 가지고 검색하는 것이다. 뒤따르는 숫자는 일 수를 나타낸다. 1이면 1일을 나타내는 것이다. 그러면 -1은 1일 이내 즉 24시간 내에 변경된 것을 의미한다.+1은 1일 이상 지난 것을 의미한다.
4). Action
이것은 find 명령으로 검색한 파일들을 어떻게 처리할 것인가를 나타낸다. 검색한 파일들의 상세 정보를 확인할 수 있고 또는 파일들을 옮기거나 삭제할 수도 있다.
Action
|
내 용
|
-print
|
검색한 파일들을 출력한다. 이 옵션을 사용하지 않아도 검색한 파일들을 출력한다. 즉 암묵적 기본값. |
-ls
|
검색한 파일들의 Inode 번호와 ls -l 을 했을 때 출력되는 상세 정보를 한꺼번에 출력하다. |
-exec COMMAND
|
검색한 파일 이름을 표준 입력으로 받아 다른 명령을 실행한다. |
5). 예제
아래는 /tmp 디렉터리에서 user1 사용자 소유 파일을 찾아 삭제하기 위해 find 명령에 Action을 사용하였다. 명령 실행 후 /tmp 디렉터리에 user1 사용자 소유의 파일을 검색해보니 파일이 모두 삭제된 것을 확인할 수 있었다.
No comments:
Post a Comment