UNIX 및실습 7 장. 파일과디렉토리검색하기 1
학습목표 파일의내용을검색하는방법을익힌다. 조건에맞는파일과디렉토리를찾는방법을익힌다. 명령이있는위치를찾는방법을익힌다. 2
Section 01 파일내용검색 - grep 지정한파일에패턴이들어있는지검색 옵션 옵션 grep [ 옵션 ] 패턴파일명들 3 기능 -i 대소문자를무시하고검색 -l 해당패턴이들어있는파일이름을출력 -n 각라인의번호도함께출력 -v 명시된패턴과일치하지않는줄을출력 -c 패턴과일치하는라인수출력 -w 패턴이하나의단어로된것만검색
파일내용검색 - grep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 1) 기본검색 grep unix grep.dat unix+ 123 2) 대소문자무시 -i grep -i unix grep.dat UNIX 12345 unix+ 123 4
파일내용검색 - grep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 3) 파일이름출력 : -l grep -l unix grep.dats. dat grep.dat 4) 줄번호출력 : n grep -n unix grep.dat 2:unix+ 123 5
파일내용검색 - grep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 5) 불일치 : -v grep v unix grep.dat UNIX 12345 system admin Network 5 6) 일치하는줄수 : c grep -c 123 grep.dat 2 6
파일내용검색 - grep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 7) 단어검색 : -w grep w 123 grep.dat unix+ 123 8) 다중옵션사용 grep -ni unix grep.dat 1:UNIX 12345 2:unix+ 123 7
[ 실습하기 ] 파일내용검색 - grep 실습하기 데이터파일 : h.txt root other sh ROOT csh user1 USER2 12root ksh user1 KSH csh 1) grep sh h.txt 2) grep -w sh h.txt 3) grep -v root h.txt 4) grep I root h.txt 5) grep -ci sh h.txt 6) grep user1 /etc/passwd 7) grep root /etc/passwd 8) grep root /etc/group 9) grep other /etc/group 결과를예측해봅시다 8
[ 실습하기 ] 파일내용검색 - grep 실습하기 데이터파일 : h.txt root other sh ROOT csh user1 USER2 12root ksh user1 KSH csh 1) 1 만검색하기위한명령은? 2) 1 이들어있지않은라인을검색하기위한명령은? 3) User 를대소문자구분없이검색하기위한명령은? 4) sh 가들어간라인의수를구하는명령은? 5) 정확히 sh 만들어간라인의수를구하는명령은? 6) root 가들어간라인을찾아파일 h.out 에저장하는명령은? 9
파일내용검색 - grep 메타문자를사용한패턴표현 문자의미예결과 ^ 라인의시작 ^ 문자열 문자열로시작하는모든행 라인의끝 문자열 문자열로끝나는모든행. 한글자 a b? 없거나한글자 patter? 한글자대응, a 로시작해서 b 로끝나는 5 글자검색 patter 또는 patter 과한문자더있는문자열검색 (pattern, pattera 등 ) * 앞의항목이없거나여러번반복 ab* a 다음에 b 가없거나반복적으로나타나는라인검색 [ ] [^] 괄호안의글자중하나괄호안에있는글자가아닌글자 [Pp]attern Pattern 또는 pattern 이나타나는라인검색 [^a-m]att att 앞에 a 부터 m 까지나오지않는라인검색 10
[ 실습하기 ] 파일내용검색 - grep 실습하기 데이터파일 : grep.dat UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 1)grep ^root h.txt 2)grep sh h.txt 3)grep r..t h.txt 4)grep oo* h.txt 5)grep [0-9].* h.txt 6)grep [^c]sh h.txt 결과를예측해봅시다 11
파일내용검색 - egrep egrep [ 옵션 ] 패턴파일명들 메타 Grep 문자의기능을확장한명령 의미예결과 앞의글자가하나 확장된 + 패턴표현식 x y 이상나온다. x 나 y 중하나가나온다 ( ) 문자열그룹 [a-z]+ark apple orange (1 2)+ search(es ing)+ airpark, dark, bark, shark apple 또는 orange 1 또는 2 가하나이상 searches 또는 searching 12
파일내용검색 - egrep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 1) + egrep [78]+ gret.dat ck07555 student ksh CK08777 student bash 2) x y egrep csh bash grep.dat ROOT other csh CK08777 student bash 13
[ 실습하기 ] 파일내용검색 - grep 실습하기 데이터파일 : eh.txt root sh user05567 ROOT csh user05777 root ksh user05666 ROOT ksh user05888 결과를예측해봅시다 1)egrep root ROOT eh.txt 2)egrep (root ROOT) ksh eh.txt 3)egrep [56]+ eh.txt 4)egrep csh ksh eh.txt 5)egrep [a-z]+body /etc/ passswd 14
파일내용검색 - fgrep fgrep [ 옵션 ] 문자열파일명들 문자열검색 문자열내의모든문자를일반문자로해석 * : 문자 * 로인식하여검색 15
파일내용검색 - fgrep fgrep 명령사용예제 기본데이터 (fg.dat) # fgrep data file # JAVA 2244 aix admin * Unix admin * Network 25 1) * 검색 fgrep * fg.dat * Unix admin * Network 25 2) # 검색 fgrep # fg.dat # fgrep data file # 16
파일내용검색 - grep 과파이프 grep 명령은파이프와함께자주사용됨 ls -l grep rw- -rw-r--r-- 1 user1 other 50 4월30일 12:00 g.dat -rw-r--r-- 1 user1 other 50 4월30일 12:00 g.dat ps -ef grep user1 user1 6683 6680 0 17:28:15 pts/1 0:00 -ksh user1 6720 6683 0 17:50:53 pts/1 0:00 -ksh 17
Section 02 파일검색 - find 사용자가시스템내에존재하는특정파일을찾을때사용 검색범위를디렉토리단위로지정 특정파일의이름, 복수개의파일을지정하는패턴, 파일의속성을조합하여검색가능 표현식과일치하는파일에대해파일의절대경로를출력하거나특정명령실행가능 18
파일찾기 - find find 경로검색조건 [ 동작 ] 경로 파일을찾을디렉토리의절대, 또는상대경로 검색조건 파일을찾기위한검색기준 and, or 를이용하여조건결합가능 동작 파일의위치를찾은후수행할동작지정 기본동작은파일의절대경로를화면에출력 19
경로설정예 파일찾기 - find 경로표현 찾기시작위치 ~ 홈디렉토리에서찾기시작. 현재디렉토리에서찾기시작 /etc /etc 디렉토리에서찾기시작 ( 절대경로 ) / /(root) 디렉토리에서찾기시작 ( 전체파일시스템검색 ) unix unix 디렉토리에서찾기시작 ( 상대경로 ) 20
검색조건종류 파일찾기 - find 검색조건표현의미기능 -name filename 파일이름 특정파일명에일치하는파일검색 메타문자 (*,?) 사용도가능하나 안에있어야함 -type 파일종류특정파일종류에일치하는파일검색 (f,d) -mtime [+ -]n -atime [+ -]n 수정 ( 접근 ) 시간 수정 ( 접근 ) 시간이 +n 일보다오래되거나, -n 일보다짧거나정확히 n 일에일치하는파일검색 -user loginid 사용자 ID loginid 가소유한파일모든파일검색 -size [+ -]n 파일크기 +n 보다크거나, -n 보다작거나, 정확히크기가 n 인파일검색 (n=512bytes) -newer 기준시간기준시간보다이후에생성된파일검색 -perm 사용권한사용권한과일치하는파일검색 (8 진수 ) 21
파일찾기 - find 동작종류 동작 -exec 명령 {} \; -ok 명령 {} \; 정의 exec 옵션은 \; 으로끝남검색된파일은 {} 위치에적용됨 exec의확인모드형태사용자의확인을받아야명령을적용 (rm i) -print 화면에경로명을출력 ( 기본동작 ) -ls 긴목록형식으로검색결과를출력 검색조건의결합기호 -a : and ( 기본 ), -o : or,! : not 22
find 사용예제 -name 파일찾기 - find find ~ -name grep.dat /export/home/user1/unix/ch7/grep.dat -type (f : 파일, d : 디렉토리 ) find ~ -type d /export/home/user1 /export/home/user1/unix /export/home/user1/unix/ch2 23
find 사용예제 파일찾기 - find -mtime (+/-:24 시간기준 ) find. -mtime -1./eg.dat./eh.dat./fg.dat 시간기준 +1 1-1 72 48 24 현재 24
find 사용예제 -newer -user 파일찾기 - find find. -newer g.dat./h.dat./eg.dat./eh.dat find /export/home -user user1 find: 디렉토리 /export/home/user 를읽을수없음 : 사용권한이거부됨 /export/home/user1 /export/home/user1/.profile 25
find 사용예제 파일찾기 - find -size (+/- : 1=512byte 기준 ) find. -size 1./Practice./eg.dat./eh.dat -perm find. -perm 0755 -ls 202587 1 drwxr-xr-x 3 user1 2007 512 May 1 20:17. 217045 1 drwxr-xr-x 3 user1 2007 512 May 1 18:44./Practice 26
파일찾기 - find find 사용예제 검색조건조합 and ( 조건을생략하면자동으로 and 처리 ) find ~ -type d name Unix /export/home/user1/unix -o (or) find. -type d -o -perm 0755../Practice 27
find 사용예제 -! (not) 파일찾기 - find find.! -newer h.dat../practice./g.dat 28
파일찾기 - find find 사용예제 검색된파일처리 삭제 (-exec 기능 ) cp grep.dat find.dat find ~ -name find.dat -exec rm {} \; 출력결과저장 find.! -newer h.dat > f.out cat f.out../practice 29 -exec rm : 삭제명령을수행 (rm find.dat) { } : 검색된결과가오는자리 \; : find 명령의끝
[ 실습하기 ] 파일찾기 - find 실습하기 1) find /etc -type l more 2) find. mtime -1 name report.txt 3) find ~ -size +2 4) find. -ls 5) find /export/home user user1 6) find. -name *.dat -exec mv {} Practice \; 7)find. -type f 1) /etc 디렉토리에있는심볼릭링크파일찾기 2) 어제작업한 report.txt 파일찾기 3) 크기가 2 블록 (1KB) 보다큰파일찾기 4) 전체파일 5) User1 사용자의파일 6) *.dat 파일찾아 Practice 디렉토리로이동 7) 현재디렉토리에서파일찾기 30
Section 03 명령어찾기 - whereis whereis 명령 지정된경로에서명령검색 /usr/bin, /usr/5bin, /usr/games, /usr/hosts, /usr/include, /usr/local, /usr/etc, /usr/lib, /usr/share/man, /usr/src, /usr/ucb 사용법 whereis ls ls:/usr/bin/ls /usr/ucb/ls 31
명령어찾기 - which which 명령 PATH 환경변수에지정된경로에서명령을찾음 지정된경로에명령파일이없으면못찾았다는메시지출력 사용법 which ls ls: /usr/bin/ls 32
[ 실습과제 ] 실습각단계화면캡처하여 pdf 파일로정리하여과제제출 (cms.mmu.ac.kr/bear) 제출기한 : 4 월 24 일자정 33