반응형

find는 실제로 리눅스 시스템에서 아주 많이 즐겨 쓰는 명령어 입니다. 

 

이런 명령어를 이용해서 무엇을 할 수 있는지 예제를 통해서 알아보는 시간을 갖도록 하겠습니다.

 

1) find를 이용해서 특정 파일의 특정 문자열 검색

 

find를 이용해서 Souce 코드를 분석 할 수 있습니다. 비단 소스코드 뿐만 아니라 아래 방법을 활용하면 리눅스 시스템에서 보다 쉽게 로그 파일 분석 및 기타 로그 파일을 분석 할 수 있습니다. 

 

find ./ -name "특정 파일 패턴" |xargs grep -n '찾고자 하는 문자열'

root@test:/mnt/linux_kernel/linux-4.19.62# find ./ -name "*.c" |xargs grep -n 'nvme_cmd_write'
./drivers/nvme/host/core.c:602: cmnd->rw.opcode = (rq_data_dir(req) ? nvme_cmd_write : nvme_cmd_read);
./drivers/nvme/host/core.c:1109:        case nvme_cmd_write:
./drivers/nvme/host/trace.c:122:        case nvme_cmd_write:
./drivers/nvme/host/trace.c:123:        case nvme_cmd_write_zeroes:
./drivers/nvme/target/io-cmd-file.c:94: if (req->cmd->rw.opcode == nvme_cmd_write) {
./drivers/nvme/target/io-cmd-file.c:321:        case nvme_cmd_write:
./drivers/nvme/target/io-cmd-file.c:337:        case nvme_cmd_write_zeroes:
./drivers/nvme/target/io-cmd-bdev.c:72: if (req->cmd->rw.opcode == nvme_cmd_write) {
./drivers/nvme/target/io-cmd-bdev.c:227:        case nvme_cmd_write:
./drivers/nvme/target/io-cmd-bdev.c:240:        case nvme_cmd_write_zeroes:
./drivers/nvme/target/admin-cmd.c:162:  log->io

cs[nvme_cmd_write]               = cpu_to_le32(1 << 0);
./drivers/nvme/target/admin-cmd.c:165:  log->iocs[nvme_cmd_write_zeroes]        = cpu_to_le32(1 << 0);

2) 특정 파일 사이즈 크기 삭제 / 복사 /이동 하기

 

find ./  -size +"파일크기"|while read line; do [리눅스 Command] $line ; done

 

이 해당 명령어를 설명하면 다음과 같습니다.

반응형

'리눅스 쉘 스크립트' 카테고리의 다른 글

awk 명령어 예제  (0) 2018.01.16
awk 사용법  (0) 2018.01.16
find 사용하기  (0) 2018.01.15
grep 으로 다중 문자열 검색  (1) 2018.01.15
grep 정규 표현식 패턴 예제 두 가지  (0) 2018.01.15
반응형

find는 간편하지만 강력한 방법으로 파일시스템의 내용을 검색하는 기술도 매우 중요합니다.

 

옵션 정리

  • -H : 심볼릭 링크를 따르지 않는다. 심볼릭 링크를 일반 파일로 취급해 대상 파일로 이동하지 않는다.
  • -L : 처리 중인 디렉토리의 심볼릭 링크를 따른다.
  • -P : 심볼릭 링크를 일반 파일로 취급한다. 심볼릭 링크가 가르키는 대상 파일이 아닌 심볼릭 링크 자체에 대한 속성을 철

디렉토리 탐색옵션

  • -maxdepth N : 현재 디렉토리에서 최대 N단계 까지의 항목들에게만 검사를 수행한다.
  • -mindepth N : 명시된 경로에서 최소 N단계까지의 검사를 수행한다.
  • -daystart : 시간과 관련된 검사를 수행할 때 기준 시간 값으로 기본값인 24시간 이내 대신에 현재일자의 00시 00분 이후의 값을 활요
  • -mount : 다른 파일시스템은 탐색하지 않는다.

파일검사 옵션 : 파일에 적용되며 검사 조건의 만족여부에 따라 참 또는 거짓을 반환

  • -amin N : 파일의 마지막 접근 시간이 N분 이전이어야 된다.
     (-amin 20 : 정확히 20분전에 접근된 파일 / -amin +35 : 최대 35분 이전까지 접근된 파일)
  • -atime N :  N*24시간, 즉 N일 전에 접근된 파일 (소수점 이하는 무시)
  • -mmin  N : 파일이 수정된 시간이 N분 이전이어야 한다.
  • -mtime N : -atime과 동일한 방법이지만 시간이 기준
  • -executable | -readable | - writable : 파일의 점근 권한이 각각 실행, 읽기, 쓰기 가능인지 검사
  • -perm : 접근 권한을 검사 조건으로 사용
  • -iname [이름] : 파일명이 이름과 일치해야 된다. (대소문자는 무시)
  • -regex [패턴] : 지정된 패턴을 정규 표현식으로 해석해서 파일의 경로명과 매칭 (단, 전체 경로명을 맵핑해야 한다)

    예제)
  1.  /etc 디렉토리 아래에 존재하는 파일중에 p로 시작하여 임의의 문자로 끝나는 파일을 모두 검색
     : find / -regex '^/etc/p[a-z]*$'
  2. 파일시스템에서 설정과 관련된 모든 파일을 찾는다. 대소문자의 차이는 무시한다.
     : find / -regex '^[/a-z_]*[cC]+[Oo]*[nN]+[fF]+[iI]*[gF]+$'

     

 파일동작 옵션

  • -delete : 지정된 검사를 만족하는 파일을 삭제한다.
  • -exec : 매칭되는 파일을 대상으로 임의의 명령어 실행. 이 인자는 실행할 명령을 생성하는 방식,
    즉 find의 검색 결과를 exec* 유형의 시스템 호출로 전달하는 식으로 동작
    find는 -exec 스위치 이후 부터 ';' 까지 모든 인자를 실행될 명령의 인자로 사용
    검색된 파일의 이름은 { } 로 표시
    ex) find /etc/ -maxdepth 1 -name passwd -exec stat {} \;


반응형

+ Recent posts