리눅스 명령어 정리 – find

이번에는 리눅스에서 파일을 검색하기위해 사용하는 명령어 find 명령어 입니다.

기본적으로 리눅스 명령어들은 옵션의 조합이 중요한편인데 find 역시 마찬가지입니다. 기본적인 사용법부터 실제로 사용하는 예시를 들어서 조금이나마 정보가되었으면 좋겠습니다.

사용법

기본사용법인 사용법을 리눅스 man을 통해 찾아보면 아래처럼 나오게 되는데
간단한 테스트파일을 만든다음 실제 예제를 통해 검색해보겠습니다.

find [-H] [-L] [-P] [-Olevel] [-D debugopts] [path…] [expression]

여기서 expression(표현식)의 경우 두 개 이상의 조합이 가능하게 되는데
ex) !expression 이면 -not expresstion : 결과에 NOT을 한게 되고
마찬가지로 -a 옵션으로 AND 연산, -o 는 OR연산자로 계산하게 됩니다.

두개를 연달아서 쓴다면 자동으로 -a 가 생략된걸로 보여집니다.

예제를 통해서 좀더 쉽게 해보겠습니다.

#Test 파일 생성
touch test.txt

예제

1. 현재 디렉터리내의 파일 리스트 확인

find

2. 지정한경로의 파일 리스트 확인

find [경로]

번외. 검색한 경로만 확인하고 싶을떄(하위디렉터리 검색x)

find [경로] -maxdepth 1

maxdepth는 하위디렉터리의 깊이를 의미합니다. 2면 한단계 더 아래까지 보여주고 그런식…

maxdepth 1
maxdepth 2

3. 파일 이름으로 검색하기

find / -name test.txt

위 사용법이 가장 기본적 입니다.
find [경로] [-name 파일이름]

4. 파일 이름일부로 검색하기(ex. te*.txt)

*,? 같은 와일드카드 문자열도 검색시에 사용이 가능합니다.

find [경로] -name [‘문자열*.확장자]

5. 확장자 명으로 검색하기(ex. *.txt)

위의 와일드카드(*) 문자열을 가지고 확장자 명으로도 검색이 가능합니다.

find [경로] -name [‘*.확장자’]

6. 파일 종류에 따라 검색하기(파일,디렉터리 등)

-type 표현식을 사용하면 파일 종류를 지정해서 검색할 수 있습니다.
기본적으로 d 는 디렉터리, f 는 파일, l 은 심볼릭 링크 등이 자주 쓰입니다.

예제를 위해 test 디렉터리를 생성한후 진행해보겠습니다.(mkdir test)

이렇게 * 를 사용하면 파일과 디렉터리가 모두 검색이 되지만

-type d 옵션을 주면 디렉터리만 검색이 됩니다.

7. 파일 크기를 이용한 검색하기

파일크기는 -size 표현식을 사용해서 검색이 됩니다.
기본적으로 block 단위를 사용하게되어있으나
파일 크기뒤에 단위를 붙이면 크기 값을 설정할 수 있습니다.
(b:block, c:bytes, w:2bytes, k:kbytes, M:mbytes, G:gbytes)

그리고 파일 크기는 정확한 값을 알기 어렵기때문에 범위로도 지정이 가능한데 이는 -size 표현식을 두개 함께 사용해서 사용이 가능합니다.
(+ 는 초과 , -는 미만)

ls -alh

ex) test2.txt는 69K test.txt는 0바이트입니다.

  • 4k인 파일 검색
    find . -size 4k
  • 50kbytes보다 크고 70보다 작은 파일을 검색.
    find . -size +50k -size -70k

8. 검색결과에서 파일 상세정보(소유자,권한,용량 등) 확인하기(find + ls)

리눅스 명령어들은 -exec를 사용하면 기타 다른 명령어들과 조합이 가능합니다.
기본적인 사용법은 “[명령어] -exec [명령어2] {} \;” 인데 find와 ls를 조합해서 파일의 상세정보(소유자,권한,용량 등)을 확인해보겠습니다.

  • 검색된 test2.txt의 ls -alh 정보 출력
    find . -name test2.txt -exec ls -alh {} \;

9. 검색결과에서 특정 문자열 찾기(find + grep)

이번에는 find와 grep을 이용해서 검색결과에서 특정 문자열을 찾아보겠습니다.
마찬가지로 -exec를 사용합니다.

find . -name test.txt -exec grep "dalso" {} \;

번외. 특정 문자열이 포함된 파일 찾기(grep + find)

위에서는 특정 문자열만 찾았다면 이제는 이 문자열이 포함된 파일만 찾아볼수도있습니다. grep 과 find를 거꾸로 사용하면 가능합니다.

  • dalso가 포함된 파일이름과 내용 출력
    grep dalso `find . -name '*.txt'`
  • dalso가 포함된 파일이름만 출력
    grep -l dalso `find . -name '*.txt'`

10. 검색결과를 파일로 저장하기.

리눅스의 모든 명령어들은 리다이렉션(>,>>) 통해서 파일로 저장이 가능합니다.
find 역시 마찬가지로 아래 명령어를 통해 파일로 저장할 수 있습니다.
find [경로] -name [파일이름] > [저장파일이름]

  • 지금 경로(.)에 모든 파일이름을 result.txt파일에 저장
    find . -name '*' > result.txt

11. 검색결과에서 에러 메시지 출력하지 않기

이건 모든 명령어가 그렇듯… 사용하다보면 가끔 에러메시지가 뜨는 경우가 있습니다.

이게 화면을 전체 차지하게되면 보고싶은 내용도 못볼수 있으니 리눅스에서 표준 에러를 안보여주게하는 2> /dev/null 을 사용해서 안보이게 할 수 있습니다.

find [경로] [expression] 2> /dev/null

  • permission denied 안뜨는거 확인.
    find /root -name '*' 2> /dev/null

권한이 있으면 잘 뜸!

후.. 이렇게 find에 대한 정리를 대충 마무리 해봤습니다.
잘 쓰면 매우 좋지만.. 쉽지않은 명령어 임에는 확실하네요

 

————————————————–

사이트 리뉴얼중입니다~

서버(Linux, ESXi), NAS(헤놀로지, ESXi 및 IT관련 정보, 기타 등등을 공유하는 커뮤니티 SVRFORUM을 새로 만들었습니다.
많은 가입(?) 부탁드립니다~
https://svrforum.com

이전글들은 모두 상단 메뉴의 Blog 글 모음에있습니다!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

홈서버 IT 커뮤니티 SVRFORUM
Link