Linux 학습 의 -- 찾기 와 선별

6062 단어 linuxshell
파일 찾기
1. 개황
find: 지정 한 위치 에서 두루 찾 습 니 다. 즉, 파일 과 디 렉 터 리 를 하나씩 찾 습 니 다.또한 특정한 특징 을 가 진 파일 (예 를 들 어 권한 특징 을 지정 한 파일) 을 찾 을 수 있 습 니 다.어떤 특징 을 가 진 대량 파일 을 처리 하기에 매우 적합 하 다.
형식:
find【path】  【expression】
expression 은 옵션, 테스트, 동작 세 가 지 를 포함 하 는 검색 표현 식 입 니 다.
옵션:
  • help  : 도움말 정보
  • depth: 현재 디 렉 터 리 를 찾 은 다음 하위 디 렉 터 리 를 찾 습 니 다
  • maxfdepth LEVEL: 제 LEVEL 층 디 렉 터 리 로 아래로 검색 설정, 0 은 현재 디 렉 터 리 만 검색 함
  • mindepth LEVEL: 적어도 LEVEL 층 디 렉 터 리 를 아래로 검색 합 니 다
  • mount: 원 격 파일 시스템 을 검색 하지 않 음
  • follow: 링크 파일 을 검색 하면 링크 가 가리 키 는 파일 과 함께 검색 합 니 다
  • 테스트:
  • name: 파일 이름 으로 찾기
  • perm: 파일 권한 으로 찾기
  • type: 특정한 유형의 파일 찾기
  • mtime + n - n: 파일 수정 시간 에 따라 찾 습 니 다. + n 은 수정 시간 이 현재 n 일 전, n 은 현재 n 일 이내
  • 임 을 표시 합 니 다.
  • atime + n - n: 파일 접근 시간 에 따라 찾기
  • size n (c): 파일 길이 n 개의 파일 을 찾 습 니 다. c 는 파일 크기 n 바이트 의 파일
  • 을 표시 합 니 다.
  • user: 파일 소유자 에 따라 찾기
  • group: 설치 파일 그룹 찾기
  • nouser: 유효한 소유자 가 없 는 파일 찾기
  • nogroup: 유효한 그룹 이 없 는 파일 찾기
  • 동작 매개 변수:
  • prune: 지정 한 디 렉 터 리 에서 찾 지 않 음
  • print: 찾 은 파일 을 표준 출력 으로 출력 합 니 다
  • exec: 찾 은 파일 에 exec 를 실행 한 후 첨부 된 셸 명령
  • ok: 찾 은 파일 에 대해 ok 후 첨부 된 셸 명령 을 실행 하고 실행 할 때마다 사용자 에 게 실행 여 부 를 알려 줍 니 다
  • 2. 실례 찾기
  • 파일 이름 으로 찾기
  •  find  /etc/   -name   "smb.conf"   -print &

    큰 파일 시스템 에서 파일 을 찾 는 데 시간 이 오래 걸 릴 수 있 으 므 로 끝 에 & 모레 실행 하 는 것 을 권장 합 니 다.
  • 파일 권한 으로 찾기
  • find /  -perm  -007  -print #查找包含其他用户可读、可写、可执行的文件,-007表示包含,007则表示等于
  • 파일 형식 으로 찾기
  • find  ./file   -type  c -print
  • 파일 시간 스탬프 와 크기 에 따라 찾기
  • find  /  -mtime -7  -print
    find  .  -size +10000000c -print #查找大于10M的文件
    find .  -size  -30  -print #查找文件小于30块的文件
  • 파일 의 주 그룹 에 따라 찾기
  • find /  -nouser -print
    find /  -group  admin  -print
  • 기타
  • find  ./backup -name  "msg"  -mtime +7 -exec ls -l {} \;

    텍스트 찾기
    1. 개황
    grep (global regular expression print): 문자열 pattern 과 관련 된 내용 을 파일 에서 찾 으 면 표준 출력 으로 출력 합 니 다.
    형식: gerp  【option】   pattern   【file】
    option:
  • i: 대소 문자 무시
  • n: 출력 결과 시 출력 줄 번호
  • s: 내용 을 찾 지 못 했 을 때 오류 메시지 가 표시 되 지 않 습 니 다
  • l: 여러 파일 에서 찾 고 파일 내용 을 찾 은 파일 이름 만 출력 합 니 다
  • h: 여러 파일 에서 찾 아 일치 하 는 내용 만 출력 하고 파일 이름 은 표시 되 지 않 습 니 다
  • c: 출력 일치 내용 의 총 줄 수
  • v: 반전 찾기, 출력 일치 하 는 내용 이외 의 줄
  • 작업 과정: 행동 검색 단위 로 텍스트 첫 줄 에서 버퍼 를 읽 고 검색 을 실행 합 니 다. 찾 으 면 전체 줄 을 출력 합 니 다. 그렇지 않 으 면 버퍼 내용 을 버 리 고 다음 줄 을 읽 어서 텍스트 가 끝 날 때 까지 계속 찾 습 니 다.
    2. 정규 표현 식 에 맞 춰
  • 줄 의 첫 줄 끝 일치: ‘^......02’       ‘[a-z]$’
  • 횟수: 'c\{3,\}' 최소 3 회 출현
  • 사용 또는: 'x | y'         grep  -in  'a'  students | grep -ln  'b'  students

  • 3. 응용
    프로필 간소화
    cd  /etc/samba
    mv sam.conf  smb.conf_backup
    cat smb.conf_backup  |  grep  -v  '#'  |  grep -v  '^;'  | grep -v  '^$'  >  smb.conf

    시스템 관리 명령 에서 출력 찾기
    chkconfig   --list  |  grep  bluetooth

    3. 포맷 텍스트 데이터 추출 도구
    포맷 된 텍스트 는 일반적으로 특정한 문자 (일반적으로 tab) 를 사용 하여 텍스트 의 다른 필드 를 분리 합 니 다. awk 는 바로 이러한 포맷 된 텍스트 데 이 터 를 처리 합 니 다. 이 명령 을 발명 한 세 작가 의 이름 의 이니셜 은 각각 A, W, K 로 이름 을 얻 었 습 니 다.
    1. 개황
    형식:
    awk  【-F】  ‘command’   input-file             awk  -f  script   input-file
    두 가지 호출 형식 입 니 다. 전 자 는 - F 옵션 을 사용 하여 도 메 인 구분 자 를 지정 합 니 다. 기본 값 은 빈 칸 입 니 다.두 번 째 는 - f 옵션 을 사용 하여 스 크 립 트 파일 에 처리 명령 을 호출 합 니 다.
    각 행 위 는 하나의 기록 으로 도 메 인 구분자 에 따라 분 단 된 후, 필드 마다 도 메 인 1, 도 메 인 2, 도 메 인 3 등 순 으로 '$1', '$2' 를 사용 하여 표시 합 니 다. 전체 기록 은 '$0' 을 사용 합 니 다. 동작 은 보통 패턴 뒤의 큰 괄호 안에 놓 여 있 으 며, 일반적으로 awk 의 내장 함수 입 니 다.
    2. 사용
  • 텍스트 헤더 표현 식 BEGIN {...}, 모든 문장 이 시작 되 기 전에 실행 합 니 다. END {........................................................... 
  • 모든 산술 표현 식 과 관계 조작 자 를 지원 하고 정규 표현 도 지원 합 니 다. "~/pattern/" 、 "!~/pattern/"
  • awk -F: '$1 !~/root/{print $1"\t"$4}' /etc/passwd
  • 프로 세 스 제어
  • if ..else   while     do...while    for
    continue     break     next      exit
    인 스 턴 스: (일반 파일 의 크기 와 폴 더 의 개 수 를 통계 합 니 다)
    BEGIN{
      A = 0;
      count=0;
    }
    {
      if($1 ~/^-/)   A += $5;
      if ($1 ~/^d/) count++;
    }
    END{
      print "total:" A;
      print  count-2,"directories.";
    }
    (ping 명령 의 지연 상황 통계)
    BEGIN{
      FS="[:=]";
      AVG = 0;
      MAX = 0;
      MIN = 0;
    }
    {
       for(I = 1; I < 9; I++)
       {
         if (NR == 2)
         {
             MAX = $11;
             MIN = $11;
             IP_ADDR = $4;
          }
          if(NR>1 && NR < 6)
          {
              AVG += $11;
              if ($11 > MAX)  MAX = $11;
              if ($11 < MIN)   MIN = $11;
          }
          if (NR > 6) exit;
          next;
       }
    }
    END{
       AVG = AVG/4;
       print "IP address:",IP_ADDR;
       print "Avg:",AVG,"ms";
       print "Max:",MAX,"ms";
       print "Min:",MIN,"ms"; 
    }
  • 변수
  • 내 장 된 변수: FILENAME (파일 이름 입력), NF (현재 기 록 된 개수 처리 중), NR (텍스트 에서 기 록 된 개수 읽 기), FNR (현재 읽 은 기록 수, 새 파일 읽 을 때 초기 화 됨), OFS (출력 분할 필드 의 문자, 기본 값 공백 설정), RS (기록 구분자 설정, 기본 값 새 줄 설정), OFMT (디지털 출력 형식), ENVIRON (환경 변수 읽 기)
    사용자 정의 변수: 보통 BEGIN 구문 에 넣 어 초기 화 합 니 다.
  • 내장 함수
  • int(x), exp(x),sqrt(x),log(x),sin(x),cos(x),atan2(x,y),rand(),system(),print,toupper(str),tolower(str),sbustr(str,start[,len]),printf(format,expr1[,exp2...]),split(str,array[,filedsep]),match(string,regexp[,array]),length(str),index(string,find),sub(regexp,replacement[,target]),gsub(regexp,replacement[,target])

    좋은 웹페이지 즐겨찾기