관리 메뉴

Today is Present.

05 파일검색과 명령어검색 실무 본문

리눅스 학습

05 파일검색과 명령어검색 실무

MorningPhys 2020. 11. 30. 00:32

# find 의 파일검색 기본사용법 익히기

[root@localhost ~]# find / -empty -exec ls -l {} \; (띄어쓰기 주의)

// 파일의 용량이 0이거나 비어있는 디렉토리를 검색할 때 유용한 방법이다.  여기서 주의할 것은

"-exec ls -l \;" 에서 맨 마지막의 { }와 \; 사이는 반드시 공백을 두어야 한다.

{ }와 \;을 붙이게 되면 정상적인 검색이 되지 않는다.

 

[root@localhost ~]# find / -uid 500 -exec ls -l {} \;

[root@localhost ~]# find / -user morphys -print

[root@localhost ~]# find /home/morphys -name *.dat -exec ls -l {} \;

[root@localhost ~]# find ~sulinux -name *.dat -exec ls -l {} \;

 

# 검색된 파일을 바로 삭제하는 find 사용법

[root@localhost ~]# find ~bible -name *.bak -exec ls -l {} \;

[root@localhost ~]# find ~bible -name *.bak -print -exec rm -f {} \;

[root@localhost ~]# find ~bible -name *.bak -exec ls -l {} \;

[root@localhost ~]# find / -name access_log -print -exec rm -f {} \;

[root@localhost ~]# find /home -name error_log -print -exec rm -f {} \;

 

# 파일용량이 큰 파일들을 모두 검색하여 처리하기

[root@localhost ~]# find / -size +100M -exec ls -lh {} \; // h옵션 : human-readable

 

# 지정한 퍼미션을 가지고 있는 파일 검색하기

[root@localhost ~]# find / -perm 4755 -exec ls -l {} \;

 

# 파일의 변경시간을 기준으로 원하는 파일 검색하기

[root@localhost ~]# find /home/morphys -mmin 5 -exec ls -l {} \; (5분 전에 변경된 파일)

[root@localhost ~]# find /home/morphys -mmin +10 -exec ls -l {} \; (10분 이전에 변경된 파일)

[root@localhost ~]# find /home/morphys -mmin -10 -exec ls -l {} \; (10분 이내에 변경된 파일)

[root@localhost ~]#

[root@localhost ~]# find / -atime -100 -exec ls -l {} \; (최근 100시간 이내에 사용된 파일)

[root@localhost ~]# find / -atime +100 -exec ls -l {} \; (최근 100시간 이전에 사용된 파일)

[root@localhost ~]# find / -mtime -1 -exec ls -l {} \; (최근 1시간 이내에 변경된 파일)

[root@localhost ~]# find / -mtime +1 -exec ls -l {} \; (최근 1시간 이전에 변경된 파일)

 

# 지정한 파일보다 더 최근에 사용된 적이 있거나 변경된 적이 있는 파일 검색

[root@localhost ~]# find / -anewer /home/morphys/tempfile -exec ls -l {} \;

// /home/morphys/tempfile 이라는 파일보다 더 최근에 액세스된 적이 있는 파일을 보여준다.

 

[root@localhost ~]# find / -newer /home/morphys/tempfile -exec ls -l {} \;

// /home/morphys/tempfile 이라는 파일보다 더 최근에 변경된 적이 있는 파일을 보여준다.

 

# 읽기 또는 실행, 쓰기가능한 파일을 검색하기

- executable : 실행 가능한 파일 검색

- readable : 읽기 가능한 파일 검색

- writable : 쓰기 가능한 파일 검색

 

[root@localhost ~]# find /home /user -executable \ ! -writable -print

/home 디렉토리와 /user 디렉토리를 대상으로 실행 가능하지만 쓰지 못하는 파일을 대상으로 검색

 

# 특정 파일타입의 파일들만 검색하기

-type b : 블록장치 파일

-type c : 문자장치파일

-type d : 디렉토리

-type p : FIFO파일(First In First Out)

-type f : 일반파일(regular file)

-type l : 심볼릭 링크파일(symbolic link file)

-type s : 소켓파일(socket file)

 

[root@localhost ~]# find /dev -type b -exec ls -l {} \;

[root@localhost ~]# find /dev -type c -exec ls -l {} \;

[root@localhost ~]# find /dev -type d -print

[root@localhost ~]# find /etc -type f -exec ls -l {} \;

 

# root 소유의 SetUID, SetGID, StickyBit 파일을 검색하기

[root@localhost ~]# find / -user root -perm 4755 -exec ls -l {} \;

[root@localhost ~]# find / -user root -perm 4755 -exec ls -l {} \;

[root@localhost ~]# find / -user root -a -perm 4755 -exec ls -l {} \;

[root@localhost ~]# find / -user root -and -perm 4755 -exec ls -l {} \; // and 조건

 

[root@localhost ~]# find / -user root -o -perm 4755 -exec ls -l {} \;

[root@localhost ~]# find / -user root -or -perm 4755 -exec ls -l {} \; // or 조건

 

# 시스템 보안점검시 반드시 검색해야 하는 몇가지 find 검색 방법

[root@localhost ~]# find / -name .rhosts -exec ls -l {} \;

[root@localhost ~]# find / -name .bash_history -exec ls -l {} \;

[root@localhost ~]# find / -nouser -o -nogroup -exec ls -l {} \;

 

# 지정한 문자열을 가지고 있는 파일 검색하기

[root@localhost ~]# find /home -type f -exec egrep -i "linux" /dev/null {} \;

 

# grep 을 이용한 문자열 검색 및 편집처리 실무

. : 아무문자나 한문자를 의미함

* : 어떤 문자열이나 문자길이에 무관한 문자열을 의미함

^ : 행의 시작 문자를 의미함

$ : 행의 마지막 문자를 의미함

[ ] : 한문자 길이의 패턴리스트

[^ ] : 지정된 문자들 이외의 문자들을 의미함

\ : 뒤에 오는 문자를 문자그대로 인식(특수문자를 표현할때 사용)

/< : 단어의 시작 위치를 의미함

/> : 단어의 마지막 위치를 의미함

 

# 지정된 파일 내에서 특정 문자 찾기

[root@localhost ~]# grep apache README

[root@localhost ~]# grep -c apache README // "apache" 라는 문자를 포함한 행이 몇개 인지 ?

 

# 지정된 파일 내에서 특정문자가 존재하지 않는 행만 검색하기

[root@localhost ~]# grep -v apache README

// README 파일에서 "apache" 라는 문자열을 포함하지 않는 행의 개수는 ?

[root@localhost ~]# grep -vc apache README

 

# 지정된 파일 내에서 대소문자 구분없이 특정문자 검색하기

[root@localhost ~]# grep -i apache README

[root@localhost ~]# grep -ic apache README // 행수 반환

 

[root@localhost ~]# ls -l /etc | grep "^d" // 특정 디렉토리 내에서 디렉토리리스트만 확인하기

[root@localhost ~]# ls -l /etc | grep "^-" // 특정 디렉토리 내에서 파일리스트만 보기

[root@localhost ~]# ls -l /etc | grep "^b" // 특정 디렉토리 내에서 블록장치 파일만 보기

[root@localhost ~]# ls -l /etc | grep "^c" // 특정 디렉토리 내에서 문자장치 파일만 보기

[root@localhost ~]# ls -l /etc | grep "^l" // 특정 디렉토리 내에서 심볼릭장치 파일만 보기


# 실무에서 사용하는 awk 의 유용한 활용법

// passwd 파일에서 각 계정사용자 ID만 출력

[root@localhost ~]# cat /etc/passwd | awk -F: '{print $1}'

 

// passwd 파일의 각각의 행들을 ":"(콜론)으로 구분하여 첫번째 항목인 ID와 여섯번째 항목인 홈디렉토리를 결과로 출력하라

[root@localhost ~]# cat /etc/passwd | awk -F: '{print $1 " "$6}'

 

// access_log 파일에 유일 IP주소를 카운트할 수 있다. 웹페이지를 방문한 유일IP주소를 카운트한다.

 

[root@localhost ~]# cat access_log | awk '{print $1}' > imsi ; sort -u imsi > imsi3 ; wc -l imsi3

// 로그파일의 맨 첫번째 항목인 IP 주소부분만을 imsi 파일에 저장한다.

// imsi 파일에 저장된 IP주소들을 유일한 IP 로 정렬한 후에 이 데이터를 imsi3에 저장한다.

// 즉, imsi3 파일에는 중복되지 않은 유일한 IP 주소리스트들이 저장된다.

// imsi3 에 저장된 행을 카운트한다.(wc -l imsi3)

 

# 명령어의 절대경로를 확인하는 which 활용법

[root@localhost ~]# which perl1

[root@localhost ~]# which netstat

/bin/netstat

[root@localhost ~]# 

[root@localhost ~]# which -a find

/bin/find

/usr/bin/find

[root@localhost ~]# 

 

728x90
반응형