리눅스 OS 관련 포스팅 목록
2020/07/09 - [Linux/OS] - Linux tar 압축 풀기(Ubuntu, tar.gz)
2020/06/30 - [Linux/OS] - Linux Ubuntu 권한 설정(chmod)
2020/06/19 - [Linux/OS] - Linux Ubuntu NC 사용법 - 1
2020/04/28 - [Linux/OS] - Linux Ubuntu 게이트웨이 주소 설정
2020/04/26 - [Linux/OS] - Linux Ubuntu 아이피 설정하기
2019/08/02 - [Linux/OS] - Linux Ubuntu 커널 버전 확인
목차
Find 명령어
녕하세요. 오늘은 특정 파일을 검색하기 위해 사용하는 Find 명령어에 대해 알아보도록 하겠습니다.
업무를 진행하다보면 txt 확장자나 word, ppt 등 특정 파일들을 검색해야할 때가 있습니다.
하지만 컴퓨터 저장소는 방대하고 너무 크기 때문에 우리가 원하는 파일들 이외에도 여러가지 확장자 또는 파일들이 존재합니다.
그리고 구조가 복잡합니다. 디렉토리가 한 개만 존재하는 것이 아니라 하위의 하위의 하위까지... 아주 많은 트리 구조로 이루어져있습니다.
또한 리눅스는 권한 구조가 있기 때문에 읽기 권한, 쓰기 권한 등의 권한이 부여된 파일들만 접근이 가능합니다.
이런 파일들을 하나 하나 직접 골라가며 파일을 검색한다는 것은 무리겠지요.
그래서 각 운영체제 별로 파일 또는 폴더를 검색하는 방법들이 있습니다.
윈도우 운영체제 환경에서 검색 기능을 예로 들자면 "Ctrl + e" 버튼을 클릭하여 윈도우 탐색기가 나타납니다.
그리고 주소창 오른쪽에 보면 검색창이 있으며 이곳에 파일명 또는 디렉토리명을 입력하여 검색할 수 있습니다.
하지만 UI를 표시하기 위해 컴퓨터는 더 많이 움직일 수밖에 없고 성능도 느려집니다.
반면, 리눅스 환경에서는 터미널을 통해 쉘에 접근할 수 있고 UI도 간소하여 속도가 빠르고 우수합니다.
그렇다고 윈도우에 커맨드로 검색을 못하는 것은 아닙니다. 대중적이지 않다는 것이지요.
따라서 오늘은 제 블로그에서 매번 다루고 있는 리눅스 우분투 20.04 환경에서 특정 파일을 검색하는 방법에 대하여 알아보겠습니다.
20.04 버전 이하도 같은 과정입니다.
Find 명령어 옵션
"find [옵션들] [path] [조건들]" 과 같은 형식으로 이루어져있습니다.
"일반 옵션" 란을 참고하여 여러가지 옵션들을 사용합니다.
특히 문자열과 관련된 옵션중 -user, -name, -size 등과 같은 패턴들이 많이 사용됩니다.
자 이제 실제 예제를 통해 파일들을 검색해보겠습니다.
파일명 검색
$ sudo find / -name 'chown' 2> /dev/null
관리자 권한까지 필요한 모든 파일을 검색하기 위해서는 sudo 명령어를 사용합니다.
위의 예제는 "/" 루트 경로 및 하위 디렉토리 모든 곳에서 "chown" 이라는 파일을 찾겠다는 의미입니다.
특이한 명령은 "2> /dev/null" 입니다. 여기서 숫자 "2"는 명령 수행중 오류(예외)가 발생한 내용은 "/dev/null" 로 보내겠다는 의미입니다.
리눅스 우분투에서 "/dev/null" 은 윈도우의 휴지통과 같은 디바이스입니다.
특정 확장자 파일 검색
$ sudo find / -name '*.ini' 2> /dev/null
"-name" 옵션의 값으로 '* ini" 를 사용하였습니다. '*' 문자는 어떤 값이든 상관없다는 의미입니다.
따라서 "*.ini" 앞에 어떤 값이든 상관없고 ".ini" 로 끝나는 파일을 찾으라는 의미가됩니다.
제 PC에는 ini 파일이 너무 많은 것을 확인할 수 있네요.
중간에 특정 문자 포함된 파일 검색
$ find / -name 'test*.ini' 2> /dev/null
중간에 들어간 문자를 표현하는 방법은 위의 "특정 확장자 파일 검색" 방법과 비슷합니다.
'*' 문자를 잘 활용하면 됩니다.
특정 용량 비슷한 파일 검색
$ sudo find /* -size 3M -exec ls -lt {} \; 2> /dev/null;
결과를 확인해보면 3M 근처의 파일들이 검색되고 있는 것을 알 수 있습니다.
"-exec ls -lt {} \;" 옵션은 ls -al 명령처럼 검색된 파일들의 속성을 출력해줍니다.
특정 용량 이상 파일 검색
$ sudo find /* -size +10M -exec ls -lt {} \; 2> /dev/null;
'+' 단어를 추가한 결과 10M 이상의 파일들이 검색되는 것을 확인하였습니다.