본문 바로가기

Linux

리눅스 명령어: find, grep, awk

find 

find: root 경로의 모든 파일, 링크, 소켓, FIFO, 디렉터리 등 모든 것을 출력 (f : 파일 / d : 디렉터리)

 

 

$ find -name "STR*" // 파일명이 특정 문자열로 시작하는 파일 검색 
$ find -name "*STR*" // 파일명에 특정 문자열이 포함되는 파일 검색
$ find -name "*STR" // 파일명이 특정 문자열로 끝나는 파일 검색
$ find -name "T*" // 파일명이 T로 시작하는 파일 검색

 

 

* root 경로에서 "파일"만 출력

$ find / -type f

 

 

* root 경로의 "파일" 중 size 가 5M 이상이고 권한이 644인 것만 출력

$ find / -type f -size +5M -perm 644

cf) (권한인) 644 앞에 +,- 가 붙는 경우

     + : 포함하는 모든 것 / - : 일부라도 포함하는 것 / +,- 미기재 : 완전히 일치하는 퍼미션

 

 

* root 경로의 "파일" 중 size 가 5M 이상이고 파일의 상태가 변경된지 5일 이상 된 것 (s,m,h,d,w: 초,분,시,일,주)

$ find / -type f -size +5M -mtime +5d

  cf) mtime - modify / atime - access / ctime - change

 

 

* root 경로의 "파일" 중 size 가 5M 이상인 것만 ls 의 형태로 출력 

$ find / -type f -size +5M -exec ls -l {} \;

  cf) exec : 명령어를 이어붙일 때 사용

      {} : find 에서 나온 결과를 담은 변수 같은 개념

       \; : exec 의 모든 실행이 끝났다는 것을 find 에게 알려주는 역할

 

 

* root 경로의 "파일" 중 size 가 5M 이상인 것을 모두 삭제

$ find -type f -size +5M -exec rm -rf {} \;

grep

grep: 대량의 텍스트 파일에서 패턴을 검색할 때 사용할 수 있는 정규식 터미널 명령 중 하나.

패턴을 입력받아 특정 패턴에 대해 지정된 파일을 검색

파일의 내용이나 콘솔의 출력물 중 특정 문자열을 찾아준다.

 

 

* test.txt 파일에서 abc 라는 문자열이 있는 라인 출력 ( 현재 경로의 "모든" 파일인 경우 파일명 대신 * )

$ grep abc test. txt

 

 

* 현재 경로 & 하위에 있는 "모든" 파일에서 abc 라는 문자열이 있는 라인 출력 ( --recursive)

$ grep abc * -r

 

 

* test.txt 파일에서 abc 라는 문자열이 있는 라인을 찾아서 연속된 3라인을 함께 출력

$ grep abc text.txt -A 3

 

 

* test.txt 파일에서 abc 라는 문자열이 있는 라인을 라인 번호와 함께 출력

$ grep abc -text.txt -n

 

 

* 현재 경로 & 하위에 있는 모든 파일에서 abc 라는 문자열이 있는 라인을 라인 번호와 함께 출력

$ grep abc * -rn

 

 

* ps 의 결과에서 abc 가 있는 라인 출력 

$ ps aux | grep abc

  cf) ps : 현재 실행 중인 프로세스 목록과 상태

       ps -ef : CPU 사용률 & 프로세스 체크

       aux : 프로세스의 소유자(사용자)를 기준으로 출력

 

 

* ps 의 결과에서 abc 가 있는 최대 3개 라인 출력

$ ps aux | grep abc -m 3

awk

awk: 표준 입력이나 파일로부터 입력을 받고 문자를 파싱해서 원하는 결과를 얻어내는 데에 사용

cf) UID (User Id) : 프로세스를 실행한 사용자의 정보

     PID (Process Id) :  운영체제에서 프로세스를 구분하기 위해 부여받은 번호

 

 

* ps 의 결과 중 1열 (세로줄, column, UID) 출력

ps aux | awk '{print$1}'

 

 

 

*  ps 의 결과 중 1, 2열 (UID, PID) 출력

$ ps aux | awk '{print$1, $2}'

 

 

*  1부터 10까지 더한 후 값 출력

$ seq 1 10 | awk '{s+=$1} END {print s}'

 

 

 

참고 출처: https://jybaek.tistory.com/704