find, grep, egrep
일반적인 검색 (find, grep, egrep)
grep -v "200.0.0.1" messages | grep -v "domain.com" > messages.temp
grep -i -l "찾는 문자열" * -r 2 > /dev/null - 대소문자 구분 X
find . -exec grep -i -l "찾는문자열" {} \; 2> /dev/null 한글, 영어, 대소문자 안가림
egrep '(pattern1|pattenr2)' file.txt
find / -name "foobar" -print (파일 이름에 foobar 찾기)
find / -name 'et*' -type d (d:디렉토리)
find / -name 'et*' -type f (f:파일)
find / -iname 파일명 (대소문자구분X)
find / -user "사용자ID" -print - 특정사용자 소유의 파일
FIND 상세
1. 타입별 찾기 (directory, file, user)
find / -name 'et*' -type d (d:디렉토리)
find / -name 'et*' -type f (f:파일)
find / -iname 파일명 (대소문자구분X)
find / -user "사용자ID" -print - 특정사용자 소유의 파일
2. 수정된 날짜로 찾기
# find . -mtime +100 -type f
=> 수정한 날짜가 100일 이상된것 찾기
# find . -mtime -100 -type f
=> 수정한 날짜가 100일 안된것 찾기
# find . -mtime -100 -type f -exec rm -rf {} \;
=> 수정한 날짜가 100일 안된것 찾아서 지우기
# find . -mtime -100 -type f -exec cp -ar {} ./aaaa/ \;
=> 수정한 날짜가 100일 안된것 찾아서 지우기
find / -ctime -1 -a -type f | xargs ls -l | more
=> 최근 하루동안에 변경된 파일을 찾기
find / -mtime +30 -print | more
=> 오래된 파일(30일 이상 수정되지 않은 파일) 찾기
find / ! ( -atime -30 -a ( -type d -o -type f ) ) | xargs ls -l > not_access.txt
=> 최근 30일안에 접근하지 않은 파일과 디렉터리를 별도의 파일로 만들기
find . -prune ...
=> 하위 디렉터리로 내려가지 않고 현재 디렉터리에서만 검색하기
3. 엑세스한 날짜로 찾기
# find . -atime +100 -type f
=> 엑세스 날짜가 100일 이상된것 찾기
# find . -atime -100 -type f
=> 엑세스 날짜가 100일 안된것 찾기
4. 퍼미션 검색
퍼미션이 777 인 파일 찾기- 퍼미션이 777 인 파일 찾기
find / -perm 777 -print | xargs ls -l | more
- others 에게 쓰기(write) 권한이 있는 파일을 찾기
find / -perm -2 -print | xargs ls -l | more
- others 에게 쓰기(write) 권한이 있는 파일을 찾아 쓰기 권한을 없애기
find / -perm -2 -print | xargs chmod o-w
또는
find / -perm -2 -exec chmod o-w {} ; -print | xargs ls -l | more
- 사용자이름과 그룹이름이 없는 파일 찾기
find / ( -nouser -o -nogroup ) -print | more
- 빈 파일(크기가 0 인 파일) 찾기
find / -empty -print | more
또는
find / -size 0 -print | more
- 파일 크기가 100M 이상인 파일을 찾기
find / -size +102400k -print | xargs ls -hl
- 디렉터리만 찾기?
find . -type d ...
- root 권한으로 실행되는 파일 찾기
find / ( -user root -a -perm +4000 ) -print | xargs ls -l | more
- 다른 파일시스템은 검색하지 않기
find / -xdev ...
- 파일 이름에 공백이 들어간 파일 찾기
find / -name "* *" -print
- 숨겨진(hidden) 파일을 찾기
find / -name ".*" -print | more
- *.bak 파일을 찾아 지우기
find / -name "*.bak" -exec rm -rf {} \;
- *.bak 파일을 찾아 특정 디렉터리로 옮기기
mv `find . -name "*.bak"` /home/bak/
- 여러개의 파일에서 특정 문자열을 바꾸기
find / -name "*.txt" -exec perl -pi -e 's/찾을문자열/바꿀문자열/g' {} \;
응용하기
1. xml 파일중에 nmap 문자열을 포함하는 것들 찾기
$ find ./ -maxdepth 1 -type f -name "*.xml" -exec grep -H nmap {} \; .//test.xml:<!DOCTYPE nmaprun> .//test.xml:<?xml-stylesheet href="file:///usr/local/bin/../share/nmap/nmap.xsl" type="text/xsl"?> .//test.xml:<!-- Nmap 7.12 scan initiated Wed Nov 30 14:08:30 2016 as: nmap -T4 -A -p 1-1000 -oX test.xml 192.168.252.52 --> .//test.xml:<nmaprun scanner="nmap" args="nmap -T4 -A -p 1-1000 -oX test.xml 192.168.252.52" start="1480482510" startstr="Wed Nov 30 14:08:30 2016" version="7.12" xmloutputversion="1.04"> .//test.xml:</nmaprun> |
#!/bin/bash for datadirectory in `find /usr/local/trafficserver/var/log/trafficserver/ -type f -mtime -3 -print`; do grep "facebook” $datadirectory done |
'Tip' 카테고리의 다른 글
압축관련 (0) | 2016.12.31 |
---|---|
cron (0) | 2016.12.31 |
/etc/shadow 필드 설명 (0) | 2016.12.31 |
사용 불가능한 쉘 지정하기 (0) | 2016.12.31 |
AWK 사용법 (0) | 2016.12.30 |